*  Gauss-Jordan Yndirgeme Yöntemi Uygulamasy
    Hazyrlayan : Mahmut ACAR
    Bu uygulama #define str 4 de?eri ve dizi[][]= de?eri de?i?tirilerek 
    daha büyük dizilere uygulanabilir.
*/
#include <iostream>
#include <stdlib.h>
#define str 4                                                  // satyr sayysy giriliyor
#define stn str+1                                              // sütün sayysy=satyr+1 giriliyor
using namespace std;
void yaz( double x[str][stn] );                                // dizi'nin ekrana yazdyrylmasy
int main(int argc, char *argv[])
{                                       
double dizi[str][stn]={13,5,-3,1,18,                           // Dizi degerleri de?i?kene atanyyor                  
                      2,12,1,-4,13,
                      3,-4,10,1,29,
                       2,1,-3,9,31};
double temp;      
  cout<<endl<<"Girilen Matris"<<endl;                           // Ekrana giri? dizisi yazdyrylyyor.
  yaz(dizi);
            for (int q=0;q<str;q++){    
                              temp=dizi[q][q];
                              for (int a=q; a<stn;a++){         // q'ncü satyryn q'ncü elemanyny 1'e e?itliyoruz
                              dizi[q][a]=dizi[q][a]/temp;}      // 1'e e?itleme bitti
                              
                              for(int b=q+1;b<str;b++){         // ileri do?ru yok etme uygulanyyor
                                   temp=-1*dizi[b][q];
                                   for (int a=0; a<stn;a++){     // Üst üçgen matris elde ediliyor.
                                         dizi[b][a]=dizi[b][a]+(dizi[q][a]*temp);}}} 
  cout<<endl<<"Ust Ucgen Matris Elde Edildi"<<endl;
  yaz(dizi);
            for (int q=str-2; q>=0 ; q--){                       // Birim matris formuna indirgeniyor
                            
                            for (int a=q+1; a<stn-1; a++){       // Ylgili sütun ve son sütun üzerinde i?lem yapylyyor
                            temp=-1*dizi[q][a];
                            dizi[q][a]=dizi[q][a]+(dizi[a][a]*temp);
                            dizi[q][stn-1]=dizi[q][stn-1]+(dizi[a][stn-1]*temp);}}    
  cout<<endl<<"Birim Matris Elde Edildi"<<endl;
  yaz(dizi);                                                     // Elde edilen birim matris ekrana yazdyrylyyor
  system("PAUSE");	
  return 0;
}
void yaz ( double x[str][stn] )                                  // Dizi de?erlerinin ekrana yazylmasy
{
cout<<"-----------------------------------\n";
for ( int m=0; m<str; m++){
    for (int n=0; n<stn-1 ; n++){
           cout<<"X"<<n+1<<"= "<<x[m][n]<<"  ";}
           cout<<"Y="<<x[m][stn-1]<<endl;
}}
mahmut acar
acarmahmut@hotmail.com