WITAM WSZYSTKICH.
Próbowałem napisać program w C który liczy macierz odwrotną macierzy kwadratowej. Nie wiem co jest dlaczego obliczenia są błędne. Prosze o pomoc. Oto mój program
#include<stdio.h>#include<conio.h>main(){ int i,j,k,n,m; float a[10][20],r; printf("Podaj rozmiar macierzy:\n"); scanf("%d",&n); printf("podaj elementy macierzy;\n"); for(i=0;i<n;i++) for(j=0;j<n;j++) { printf("a[%d][%d]=",i,j); scanf("%f",&r); a[i][j]=r; printf("\n"); } clrscr(); printf("\npodana macierz ma postac:\n"); for(i=0;i<n;i++) { for(j=0;j<n;j++) printf("%.1f ",a[i][j]); printf("\n"); } //tworzenie macierzy odwrotnej for(i=0;i<n;i++) for(j=0;j<n;j++) if(i==j) a[i][j+n]=1; else a[i][j+n]=0; for(i=0;i<n;i++) if(a[i][i]==0) //dzielnik { k=i+1; if(a[k][i]!=0) for(j=i;j<n;j++) { r=a[i][j]; a[i][j]=a[k][i]; a[k][j]=r; } else if(k<n-1)k++; else { printf("Macierz osobliwa"); getch(); return 0; } //dzielenie i-tego wiersza przez aii roznego od zera for(j=i;j<n;j++) a[i][j]=a[i][j]/a[i][i]; //odejmowanie od k-tego wiersza wiersza i-tego*a[k][i] //k=0,1,2,...,i-1,i,...,n-1 for(k=0;k<n;k++) { if(k!=i) for(j=i;j<m;j++) a[k][j]=a[k][j]-a[i][j]*a[k][i]; } } //drukowanie macierzy odwrotnej for(i=0;i<n;i++) { for(j=n;j<(n*n);j++) printf("%.1f",a[i][j]); printf("\n"); } getch(); return 0;}podejżewam że błąd programu jest w tym momencie
for(i=0;i<n;i++) if(a[i][i]==0) //dzielnik { k=i+1; if(a[k][i]!=0) for(j=i;j<n;j++) { r=a[i][j]; a[i][j]=a[k][i]; a[k][j]=r; } else if(k<n-1)k++; else { printf("Macierz osobliwa"); getch(); return 0; } //dzielenie i-tego wiersza przez aii roznego od zera for(j=i;j<n;j++) a[i][j]=a[i][j]/a[i][i]; //odejmowanie od k-tego wiersza wiersza i-tego*a[k][i] //k=0,1,2,...,i-1,i,...,n-1 for(k=0;k<n;k++) { if(k!=i) for(j=i;j<m;j++) a[k][j]=a[k][j]-a[i][j]*a[k][i]; } }ponieważ program nie wchodzi w tą pętleSiedze na tym programem 3 dni i trace już trzeźwy umysł.
BARDZO PROSZE O POMOC!!! WSKAZÓWKE GDZIE TKWI BŁĄD!!!!!!
POZDRO