Нахождение матрицы 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;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.375 из 5
Похожие ответы