Wednesday 21 January 2015

Contoh script c++ Metode Gauss naif

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
#define MAX 20
void gauss2(double a[MAX][MAX], double b[MAX], int, int, double x[MAX]);
void cetak(double a[MAX][MAX], double b[MAX], int);
void hasil(double a[MAX][MAX], double b[MAX], int);
main(){
double a[MAX][MAX], b[MAX], x[MAX];
int dimensi, baris, kolom, flag;
char z;
do{
system(”cls”);
printf(”Masukkan dimensi : “);
scanf(”%d”, &dimensi);
printf(”masukkan koefisien matriks :\n”);
for(baris=1; baris<=dimensi; baris++){
for(kolom=1; kolom<=dimensi; kolom++){
printf(”a(baris[%d],kolom[%d]) : “, baris, kolom);
scanf(”%lf”, &a[baris][kolom]);
}
}
printf(”\nmasukkan vektor hasil :\n”);
for(baris=1; baris<=dimensi; baris++){
printf(”b(baris[%d]) : “, baris);
scanf(”%lf”, &b[baris]);
}
cetak(a, b, dimensi);
printf(”\nTekan sembarang tombol untuk memulai perhitungan\n”);
getch();
gauss2(a, b, dimensi, flag, x);
if(flag!=0){
printf(”\nTekan sembarang tombol untuk memulai perhitungan nilai x\n”);
getch();
hasil(a, b, dimensi);
}
printf(”\n\nNgulangi lagi ?(y/t) >”);
z=getch();
printf(”\n\n”);
}while(z==’y'||z==’Y');
}
void gauss2(double a[MAX][MAX], double b[MAX], int dimensi, int flag, double x[MAX]){
double pivot1, pivot2;
int pos, baris, kolom;
flag = 1;
for(pos=1; pos<=dimensi; pos++){
pivot1 = a[pos][pos];
if(pivot1 == 0){
flag=0;
printf(”pivot pada a[%d][%d] bernilai nol, tidak ada penyelesaian”, pos, pos);
break;
}
else{
for(kolom=1; kolom<=dimensi; kolom++)
a[pos][kolom]=a[pos][kolom]/pivot1;
b[pos]=b[pos]/pivot1;
cetak(a, b, dimensi);
for(baris=pos; baris<=dimensi; baris++){
if(baris+1<=dimensi){
pivot2 = a[baris+1][pos];
for(kolom=1; kolom<=dimensi; kolom++)
a[baris+1][kolom]=a[pos][kolom]*(-pivot2)+a[baris+1][kolom];
b[baris+1]=b[pos]*(-pivot2)+b[baris+1];
cetak(a, b, dimensi);
}
}
}
}
}
void cetak(double a[MAX][MAX], double b[MAX], int dimensi){
int baris, kolom;
printf(”\n”);
for(kolom=1; kolom<=dimensi; kolom++)
printf(” a%d “, kolom);
printf(” b \n”);
for(baris=1; baris<=dimensi; baris++){
for(kolom=1; kolom<=dimensi; kolom++)
printf(”%6.2lf”, a[baris][kolom]);
printf(”%6.2lf\n”, b[baris]);
}
}
void hasil(double a[MAX][MAX], double b[MAX], int dimensi){
int pos, kolom, i;
double x[MAX], temp;
x[dimensi]=b[dimensi]/a[dimensi][dimensi];

for (pos=dimensi-1;pos>=1;pos–){
temp=b[pos];
for(kolom=pos+1;kolom<=dimensi;kolom++)
temp=temp-a[pos][kolom]*x[kolom];
x[pos]=temp/a[pos][pos];
}
printf(”\n\nHASILNYA ADALAH\n”);
printf(”——————————\n”);
printf(”| I | X(I) |\n”);
printf(”——————————\n”);
for (i=1;i<=dimensi;i++)
{
printf(”|”);
printf(”%5d”, i);
printf(”\t |”);
printf(”%15lf |\n”, x[i]);
}
printf(”——————————\n”);
}




Download script Link1 / Link2



No comments:

Post a Comment