Помогите разобраться в програме на с++
Помогите с програмой.Если матрица размером 3 то все норм пашет, а если 4 то прога выкидывает ошибку(компилируетса нормально).Програма решает линейное уравнение методом Гаусса - Жордана.
Код: #include <stdio.h> #include <conio.h> #include <math.h> #include <iostream.h> main() { clrscr(); float a[11][11], b[11], x[11], t; int i, j, k, m, n; n=4; a[1][1]= 2; a[1][2]= 0; a[1][3]= 7; a[1][4]= 1; b[1]= 12; a[2][1]= 1; a[2][2]=2; a[2][3]=-1; a[2][4]= -1; b[2]=2; a[3][1]= -1; a[3][2]= -2; a[3][3]= 1; a[3][4]= 2; b[3]= 0; a[4][1]= 0; a[4][2]= 2; a[4][3]= 0; a[4][4]= 0; b[4]= 6; cout << "\n\n"; for (i=1; i<=n; i++) { for (j=1; j<=n; j++) cout << a[i][j] << " "; cout << b[i] << "\n"; } double eps=.000001; double max; int max_i; double lead, a_div_lead; for(k=1; k<=n; k++) { max=0; max_i=-1; for(int i=k; i<=n; i++) { if(fabs(a[i][k])>max) { max=fabs(a[i][k]); max_i=i; } } if(max_i==-1 || fabs(a[max_i][k])<eps) { cout << "\n\n" << "Error: det=0" << "\n\n"; break; } lead=a[k][k]; for(j=k; j<=n; j++) a[k][j]/=lead; b[k]/=lead; for(i=1; i<=n; i++) { a_div_lead=a[i][k]/a[k][k]; if(i!=k) { for(j=k; j<=n; j++) a[i][j]-=a[k][j]*a_div_lead; b[i]-=b[k]*a_div_lead; } } } cout << "\n\n"; for (i=1; i<=n; i++) { for (j=1; j<=n; j++) cout << a[i][j] << " "; cout << b[i] << "\n"; } getch(); } |
Часовой пояс GMT +4, время: 03:43. |
Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.