Нахождение матрицы 3x3 по методу Гаусса - C (СИ)
Формулировка задачи:
Здравствуйте! У меня проблема, она заключается в том, что программа работает, выдает правильные ответы, но при выводе матриц нули не выводятся, а вместо элемента с индексом 3 1 выводится огроменное число. Где ошибка?
// Нахождение матрицы 3x3 по методу Гаусса #include <stdio.h> #include <locale.h> int main() { setlocale(0, "rus"); int m[4][4], // матрица пользователя b[4], // вторая матрица nm[5][5], nb[5]; // полученные матрица int i,j; double x, y, z, z1, y1; printf("\t\t\t Нахождение матрицы по методу Гауссу (3x3)\n\n\n"); //Ввод первой матрицы for(i = 1; i < 4; ++i ) { for(j = 1; j < 4; ++j) { printf("Введите элемент матрицы a[%d][%d]: ", i, j); scanf("%d", &m[i][j]); } } printf("\n\n"); //Ввод второй матрицы for(i = 1; i < 4; ++i) { printf("Введите элементы второй матрицы: "); scanf("%d", &b[i]); } printf("\n\n"); // изменение первой матрицы for(i = 1; i < 4; ++i) { nm[1][i] = m[1][i]; nm[2][i] = (m[1][1] * m[2][i]) - (m[2][1] * m[1][i]); nm[4][i] = (m[1][1] * m[3][i]) - (m[3][1] * m[1][i]); } for(i = 2; i < 4; ++i) { nm[3 ][i] = (nm[2][2] * nm[4][i]) - (nm[4][2] * nm[2][i]); } // изменение второй матрицы nb[1] = b[1]; nb[2] = (m[1][1] * b[2]) - (m[2][1] * b[1]); nb[4] = (m[1][1] * b[3]) - (m[3][1] * b[1]); nb[3] = (nm[2][2] * nb[4]) - (nm[4][2] * nb[2]); //Вывод полученных матриц for( i = 1; i < 4; ++i) { for(j = 1; j < 4; ++j) { printf("%5.d ", nm[i][j]); } wprintf(L"%c ", '\x7C'); printf("%2.d", nb[i]); wprintf(L"\n%19.c\n", (i != 3)?'\x7C': ' '); } printf("\n\n"); z= nb[3] / nm[3][3]; printf(" z = %g\n", z); z1 = (z * nm[2][3]) * (-1); y = (nb[2] + z1) / nm[2][2]; printf(" y = %g\n", y); y1 = ((y * nm[1][2]) + (z * nm[1][3])) * (-1); x = (nb[1] + y1) / nm[1][1]; printf(" x = %g\n", x); return 0; }
Решение задачи: «Нахождение матрицы 3x3 по методу Гаусса»
textual
Листинг программы
nm[3][1] = 0;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д