Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.01.2016, 12:08   #1
Maray
Форумчанин
 
Регистрация: 03.01.2015
Сообщений: 160
По умолчанию Метод Гаусса

Добрый день!

Подскажите, пожалуйста, написала программу, которая реализует метод Гаусса. такой вот вопрос, я использую цикл не до конца, то есть, цикл у меня проходит один круг и принудительно завершается. Программа работает, но вот можно ли так реализовывать?

Код:
#include<iostream>
#include<math.h>
#include <locale>
#define n 3
 
using namespace std;
 
int Vivod(double A[n][n], double B[n]){
    int i, j;
    for (i = 0; i < n; i++){
 
        for (j = 0; j < n; j++){
            cout << A[i][j] << "X" << i + 1 << "+" << A[i][j + 1] << "X" << i + 2 << "+" << A[i][j + 2] << "X" << i + 3 << "=" << B[i] << endl;
            cout << A[i + 1][j] << "X" << i + 1 << "+" << A[i + 1][j + 1] << "X" << i + 2 << "+" << A[i + 1][j + 2] << "X" << i + 3 << "=" << B[i + 1] << endl;
            cout << A[i + 2][j] << "X" << i + 1 << "+" << A[i + 2][j + 1] << "X" << i + 2 << "+" << A[i + 2][j + 2] << "X" << i + 3 << "=" << B[i + 2] << endl;
            cout << endl;
            return 0;
        }
 
    }
 
}
 
int main(){
    setlocale(LC_ALL, "Russian");
    double A[n][n], B[n], X[n], k = 0;
    int i, j;
    bool flag1, flag2, flag3;
 
    flag1 = false;
    flag2 = false;
    flag3 = false;
    cout << "Введите матрицу А" << endl;
    for (i = 0; i < n; i++){
 
        for (j = 0; j < n; j++){
            cout << "A[" << i + 1 << "][" << j + 1 << "]= ";
            cin >> A[i][j];
        }
 
    }
    cout << endl;
    cout << "Введите матрицу B" << endl;
    for (i = 0; i < n; i++){
        cout << "B[" << i + 1 << "]= ";
        cin >> B[i];
    }
    cout << endl;
    Vivod(A, B);
 
    if (A[1][0] == 0)
    {
    }
    else
    {
        k = A[1][0] / A[0][0];
        A[1][0] = A[1][0] - k*A[0][0];
        A[1][1] = A[1][1] - k*A[0][1];
        A[1][2] = A[1][2] - k*A[0][2];
        B[1] = B[1] - k*B[0];
        k = 0;
        Vivod(A, B);
    }
    if (A[2][0] == 0)
    {
    }
    else
    {
        k = A[2][0] / A[0][0];
        A[2][0] = A[2][0] - k*A[0][0];
        A[2][1] = A[2][1] - k*A[0][1];
        A[2][2] = A[2][2] - k*A[0][2];
        B[2] = B[2] - k*B[0];
        k = 0;
        Vivod(A, B);
    }
    if (A[2][1] == 0)
    {
    }
    else
    {
        if (A[1][1] / A[2][1] == A[1][2] / A[2][2])
        {
            cout << "Матрица вырожденна!" << endl;
            system("pause");
            return 0;
        }
        k = A[2][1] / A[1][1];
        A[2][0] = A[2][0] - k*A[1][0];
        A[2][1] = A[2][1] - k*A[1][1];
        A[2][2] = A[2][2] - k*A[1][2];
        B[2] = B[2] - k*B[1];
        Vivod(A, B);
    }
 
    X[2] = B[2] / A[2][2];
    X[1] = (B[1] - A[1][2] * X[2]) / A[1][1];
    X[0] = (B[0] - A[0][2] * X[2] - A[0][1] * X[1]) / A[0][0];
 
    cout << endl;
    cout << "Элементы массива X:" << endl;
    for (i = 0; i < n; i++){
        cout << "X" << i + 1 << "=" << X[i] << endl;
 
    }
 
    system("pause");
}
Maray вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Метод гаусса. ironhide8 Помощь студентам 4 30.05.2014 06:33
метод простых операций и метод гаусса зейделя tarasman11 Паскаль, Turbo Pascal, PascalABC.NET 1 23.09.2012 14:46
Безумно сложные задачки!!!! Метод Гаусса, итераций, метод половинного деления, задача Коши и т.д. Хомяк!!!!! Помощь студентам 4 08.07.2009 10:08
Метод Гаусса IgorKr Помощь студентам 10 03.02.2008 11:28