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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2011, 01:48   #1
Sarumjan
Пользователь
 
Аватар для Sarumjan
 
Регистрация: 29.11.2008
Сообщений: 46
Сообщение Метод Гаусса

Вот пытаюсь построить треугольную матрицу. В процессе тестирования программы появляется ошибка, переменная m не сохраняет числа после запятой. Подскажите в чем проблема.
Код:
#include <vcl.h>
#include <iostream.h>
#include <conio.h>

int main()
{
        int n=3,i,j,k,b[3];
        int mas[3][4]={
                {2, 1, -1, 8},
                {-3, -1, 2, -11},
                {-2, 1, 2, -3}
        };
        //vivod mas
        for(i=0;i<n;i++) {
                cout<<"\n";
                for(j=0;j<n+1;j++) {
                        cout<<mas[i][j]<<" ";
                }
        }
        for(i=0;i<n;i++) {
                b[i]=mas[i][3];
        }
        //*************
        for(i=0;i<n;i++)
        {
                if(mas[i][i]==0)
                        getch();
                for(j=i+1;j<n;j++)
                {
                        float m=mas[j][i]/mas[i][i];   // <- вот тут m не сохраняет числа после запятой.
                        b[j]=b[j]-m*b[i];
                        for (k=i;k<n;k++)
                                mas[j][k]=mas[j][k]-m*mas[i][k];
                        m=0;
                }
        }
        //vivod mas
        cout<<"------------------------------";
        for(i=0;i<n;i++) {
                cout<<"\n";
                for(j=0;j<n+1;j++) {
                        cout<<mas[i][j]<<" ";
                }
        }
        //*************

        getch();
        return 0;
}
Все ошыбки, являются собственностью автора.
Copyright © 1990-2009
Мой проект
Sarumjan вне форума Ответить с цитированием
Старый 17.11.2011, 01:59   #2
Ezhuk
Форумчанин
 
Регистрация: 09.10.2010
Сообщений: 217
По умолчанию

Потому что int/int дает целочисленный ответ.
Ёж птица гордая, пока не пнешь не полетит.
Ezhuk вне форума Ответить с цитированием
Старый 17.11.2011, 02:00   #3
_kilik_
Пользователь
 
Аватар для _kilik_
 
Регистрация: 16.08.2011
Сообщений: 69
По умолчанию

Код:
float m=float(mas[j][i])/float(mas[i][i]);
_kilik_ вне форума Ответить с цитированием
Старый 17.11.2011, 02:11   #4
Sarumjan
Пользователь
 
Аватар для Sarumjan
 
Регистрация: 29.11.2008
Сообщений: 46
По умолчанию

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

Код:
#include <vcl.h>
#include <iostream.h>
#include <conio.h>

int main()
{
        int n=3,i,j,k,b[3];
        int mas[3][4]={
                {2, 1, -1, 8},
                {-3, -1, 2, -11},
                {-2, 1, 2, -3}
        };
        //vivod mas
        for(i=0;i<n;i++) {
                cout<<"\n";
                for(j=0;j<n+1;j++) {
                        cout<<mas[i][j]<<" ";
                }
        }
        for(i=0;i<n;i++) {
                b[i]=mas[i][3];
        }
        //*************
        for(i=0;i<n;i++)
        {
                if(mas[i][i]==0)
                        getch();
                for(j=i+1;j<n;j++)
                {
                        b[j]=b[j]-((mas[j][i]/mas[i][i])*b[i]);
                        for (k=i;k<n;k++)
                                mas[j][k]=mas[j][k]-((mas[j][i]/mas[i][i])*mas[i][k]);
                }
        }
        //vivod mas
        cout<<"\n------------------------------";
        for(i=0;i<n;i++) {
                cout<<"\n";
                for(j=0;j<n+1;j++) {
                        cout<<mas[i][j]<<" ";
                }
        }
        //*************

        getch();
        return 0;
}
Все ошыбки, являются собственностью автора.
Copyright © 1990-2009
Мой проект
Sarumjan вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
метод гаусса jennis Помощь студентам 1 30.10.2010 15:51
метод Гаусса на C/C++ Passadobl Фриланс 4 21.10.2010 16:54
Метод Гаусса в С++. marko) Общие вопросы C/C++ 1 22.03.2010 16:49
Безумно сложные задачки!!!! Метод Гаусса, итераций, метод половинного деления, задача Коши и т.д. Хомяк!!!!! Помощь студентам 4 08.07.2009 10:08