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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.06.2011, 20:01   #1
Foralberg
Пользователь
 
Регистрация: 30.01.2011
Сообщений: 10
Печаль Решение СЛАУ С++

Программа запускается, но после того, как я ввожу данные она зависает. Помогите плиз исправить это.

Задание:

Решить СЛАУ A^2*X=Y^T (транспонированная), где
A = ∣2 1 5 2|
|5 2 2 6|
|2 2 1 2|
|1 3 3 1∣ ,

Y = [ 3 1 2 1 ]

Вот моя программа:

Код:
#include "stdafx.h"
#include <iostream.h>
#include <math.h>

void tr_matr(double **mtr1, int n)
{
	for(int i=0; i<n; i++)
	{
		for(int j=i+1; j<n; j++)
		{
			double p=mtr1[i][j];
			mtr1[i][j]=mtr1[j][i];
			mtr1[j][i]=p;
		}
	}
}

void mult_matr(int n, double **mtr1, double **mtr2, double **res)
{
	int i, j, k;
	for(i=0; i<n; j++)
		for(j=0; j<n; j++)
		{
			res[i][j]=0;
			for(k=0; k<n; k++)
				res[i][j]+=mtr1[i][k]*mtr2[k][j];
		}
}

void mult_matr_vect(int n, double **mtr1, double *v2, double *res)
{
	int i, j;
	for(j=0; j<n; j++)
	{
		res[j]=0;
		for(i=0; i<n; i++)
			res[j]+=mtr1[j][i]*v2[i];
	}
}

int SLAU(double **matrica_a, int n, double *massiv_b, double *x)
{
int i, j, k, r;
double c, M, max, s;
double **a, *b;
a=new double *[n];
for(i=0; i<n; i++)
a[i]=new double[n];
b=new double[n];
for(i=0; i<n; i++)
for(j=0; j<n; j++)
a[i][j]=matrica_a[i][j];
for(i=0; i<n; i++)
b[i]=massiv_b[i];
for(k=0; k<n; k++)
{
	max=fabs(a[k][k]);
	r=k;
	for(i=k+1; i<n; i++)
		if (fabs(a[i][k]>max))
		{
			max=fabs(a[i][k]);
			r=i;
		}
		for(j=0; j<n; j++)
		{
			c=a[k][j];
			a[k][j]=a[r][j];
			a[r][j]=c;
		}
		c=b[k];
		b[k]=b[r];
		b[r]=c;
		for(i=k+1; i<n; i++)
		{
			for(M=a[i][k]/a[k][k], j=k; j<n; j++)
				a[i][j]-=M*a[k][j];
			b[i]-=M*b[k];
		}
}
if(a[n-1][n-1]==0)
if(b[n-1]==0)
return -1;
else return -2;
else
{
	for(i=n-1; i>=0; i--)
	{
		for(s=0, j=i+1; j<n; j++)
			s+=a[i][j]*x[j];
		x[i]=(b[i]-s)/a[i][i];
	}
	return 0;
}
for(i=0; i<n; i++)
delete [] a[i];
delete [] a;
delete [] b;
}

int main(int argc, char* argv[])
{
	int n;
double **mas_a;
double *mas_b;
double *mas_x;
double **matr;
double v[1]={2};
cout << "Ukazhite razmernost matrici:";
cin >> n;
mas_a = new double *[n];
	for( int i=0; i<n; i++)
      mas_a[i] = new double[n];
mas_b = new double [n];
mas_x = new double [n];
matr = new double *[n];
	for(i=0; i< n; i++)
      matr[i] = new double[n];
for (i = 0; i<n; i++)
  for (int j = 0; j < n; j++)
  {
	  cout << "Vvedite element matricy: ";
	  cin >> mas_a[i][j];
  }
for (i=0; i<n; i++)
{
	cout << "Ukazhite razmernost massiva:";
    cin>> n;
	for (i=0; i<n; i++)
	{
	cout << "Vvedite element massiva: ";
    cin >> mas_b[i];
	}
}
tr_matr(mas_a, n);
mult_matr(n, matr, matr, mas_a);
mult_matr_vect(n, mas_a, v, mas_b);
SLAU(matr, n, mas_b, mas_x);
for (i=0; i<n; i++)
	cout << mas_x[i];
return 0;
}

Заранее благодарю
Foralberg вне форума Ответить с цитированием
Старый 15.06.2011, 21:09   #2
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

зависание чаще всего в подобных кодах из-за зацикливания возникает...
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 15.06.2011, 21:15   #3
Foralberg
Пользователь
 
Регистрация: 30.01.2011
Сообщений: 10
По умолчанию

Вот у меня и не получается разобраться, где зацикливание
Foralberg вне форума Ответить с цитированием
Старый 16.06.2011, 04:04   #4
l1pton17
Пользователь
 
Аватар для l1pton17
 
Регистрация: 01.11.2010
Сообщений: 75
По умолчанию

for (i=0; i<n; i++)
{
cout << "Ukazhite razmernost massiva:";
cin>> n; // скорее всего тут ошибка
for (i=0; i<n; i++)
....
}

изменяешь переменную n, в которой хранится размерность матрицы, и вообще нехорошо в цикле менять переменную, отвечающую за выход из цикла)
l1pton17 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение СЛАУ в С++ Foralberg Помощь студентам 2 12.06.2011 16:50
Решение СЛАУ в mfc Gollandec Помощь студентам 0 10.05.2010 22:26
Решение СЛАУ. Паскаль. Дабл Помощь студентам 3 05.04.2010 08:36
Решение СЛАУ Alex2012 Общие вопросы .NET 2 10.02.2010 02:07
Решение СЛАУ с ограничениями сероглазая Помощь студентам 10 04.05.2008 09:30