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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2009, 23:03   #1
xVeteRx
 
Регистрация: 10.04.2009
Сообщений: 7
Вопрос матрица Си++

Слушайте, такая задачка: есть треугольная матрица, даны её коеффициенты и правая часть(результаты) найти корни
#include <stdlib.h>
#include <conio.h>
#include <iostream.h>
#include <math.h>


void main()
{
clrscr();
randomize();

int a[19][20],b[20],s=0;

for (int i=0;i<19;i++)
{
for(int j=0;j<20;j++)
{
a[i][j]=rand()%3;
if (i>j) a[i][j]=0;
if (i==j && a[i][j]==0) a[i][j]+=1;
cout<<a[i][j]<<" ";
}
cout<<endl;
}

for(int n=19;n>=0;n--)
{
b[n]=(a[n][20]+s)/a[n][n];
s=s+a[n][n]*b[n];
}
cout<<"korni:";
for (int i = 0; i < 20; i++)
{
cout<<" "<<b[i];
}
getch();

}
подкинте идейку как решить,плиз
xVeteRx вне форума Ответить с цитированием
Старый 23.04.2009, 00:49   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Как я понимаю, речь идет о системе линейных уравнений?
Почитайте про метод Гаусса-Жордана.
А вот тут -> http://ru.wikipedia.org/wiki/Метод_Гаусса_—_Жордана очень понятно описан алгоритм.
Сам когда-то делал эту задачу.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 23.04.2009, 07:18   #3
xVeteRx
 
Регистрация: 10.04.2009
Сообщений: 7
По умолчанию

#include <stdlib.h>
#include <conio.h>
#include <iostream.h>
#include <math.h>


void main()
{
clrscr();
randomize();

int a[19][20],b[20],s=0;

for (int i=0;i<19;i++)
{
for(int j=0;j<20;j++)
{
a[i][j]=rand()%3;
if (i>j) a[i][j]=0;
if (i==j && a[i][j]==0) while(a[i][j]==0)a[i][j]=rand()%3;
cout<<a[i][j]<<" ";
}
cout<<endl;
}

for (int i=0;i<20;i++)
{
a[0][i]+=a[20][i]*(-a[20][20]);
}
cout<<endl<<endl;
for (int i=0;i<19;i++)
{
for(int j=0;j<20;j++)
{
cout<<a[i][j]<<" ";
}
cout<<endl;
}


getch();
}
пока так но чёт не то(

Последний раз редактировалось xVeteRx; 23.04.2009 в 08:10.
xVeteRx вне форума Ответить с цитированием
Старый 23.04.2009, 13:02   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Вам нужно преобразовать матрицу к единичной.
Делайте как написано в алгоритме.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 05.05.2009, 22:21   #5
xVeteRx
 
Регистрация: 10.04.2009
Сообщений: 7
Радость

Всё вродь добил РАБОТАЕТ))))
я кароч с размером матрицы чуть ошибся и у меня числа левые из памяти вызывались вот и запутался.
#include <stdlib.h>
#include <conio.h>
#include <iostream.h>
#include <math.h>


void main()
{
clrscr();
randomize();

float a[20][21];

for (int i=0;i<20;i++)
{
for(int j=0;j<21;j++)
{
a[i][j]=rand()%100;
if (i>j) a[i][j]=0;
if (i==j && a[i][j]==0) a[i][j]+=1;
cout<<a[i][j]<<" ";
}
cout<<endl;
}


for (int i=0;i<20;i++)
{
int b=a[i][i];
for(int j=0;j<21;j++)
{
a[i][j]=a[i][j]/b;
}
}
for (int z=0; z < 19; z++)
{

for (int k = 18; k >= 0; k--)
{

float b=a[k-z][19-z];
for(int n=0;n<21;n++)
{
a[k-z][n]=a[k-z][n]-a[19-z][n]*b;


}
}
}
cout<<"korni ravni: "<<endl;
for (int i = 0; i < 20; i++)
{
cout<<"x"<<i+1<<"="<<a[i][20]<<endl;
}
getch();

}
сори за оформление только сделал рад безмерно))
xVeteRx вне форума Ответить с цитированием
Старый 07.05.2009, 22:33   #6
xVeteRx
 
Регистрация: 10.04.2009
Сообщений: 7
По умолчанию

Спасиб что помог,кстат)) алгоритм пригодился)
xVeteRx вне форума Ответить с цитированием
Старый 07.05.2009, 22:39   #7
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

xVeteRx, Рад за вас )
Только оформляйте код в теги CODE.
Так будет намного читабельнее. )
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
матрица bonys91 Помощь студентам 2 26.03.2009 22:03
Матрица СИ ++ Pasha9 Помощь студентам 5 16.03.2009 01:41
Матрица Almost456 Паскаль, Turbo Pascal, PascalABC.NET 11 07.12.2008 02:04
Матрица =( Gwynbleidd Помощь студентам 3 16.12.2007 23:20