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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.01.2010, 16:50   #1
ПсиХ
 
Регистрация: 04.01.2010
Сообщений: 3
По умолчанию Кто сможет помогите с кодом С++

Народ, кому не лень, выложите плиз код в С++ на тему, Решение уравнений методом Гаусса. Коэффициенты обрабатываются в двух матрицах: матрице модуля и матрице угла комплексного числа в символической форме. Буду очень признателен любой помощи
ПсиХ вне форума Ответить с цитированием
Старый 04.01.2010, 17:51   #2
Namolem
Oo
Форумчанин
 
Аватар для Namolem
 
Регистрация: 10.10.2009
Сообщений: 350
По умолчанию

решение СЛАУ методом Гаусса с постолбцовым выбором главного элемента
Код:
#include <iostream>
#include <fstream>
#include <сmath>
using namespace std;

int main(){
	int n,i,j,k;
	double summ,tempa,tempk,*tempstr;
	ifstream in;
	ofstream out;
	in.open("in.txt");
	if (!in.good()) {
		cerr <<"Error while opening in.txt...";
		exit(1);
	}
	out.open("out.txt");
	if (!out.good()) {
		cerr <<"Error while opening out.txt...";
		exit(1);
	}
	in >>n;
	double **a = new double*[n];
	double *x = new double[n];

	for (i=0; i < n; i++){	// создание массива для расширенной матрицы
		a[i] = new double[n+1];
	}
	for (i=0; i < n; i++)// и заполнение его
		for (j=0;j<=n;j++)
			in >>a[i][j];

	for (i = 0; i < n; i++) { // начинаем приводить матрицу к треугольному виду
		if (a[i][i]==0) // если диагональный элемент на этой строке нулевой, то
			for (j=i+1; j < n; j++) // ищем ненулевой 
				if (a[j][i]!=0){ // и меняем местами
					tempstr = a[i];
					a[i]=a[j];
					a[j]=tempstr;
				}
		double maxa = a[i][i];
		for (j=i+1; j < n; j++) // выбор главного элемента в столбце
				if ((abs(a[j][i])>abs(maxa))&&a[j][i]!=0) { // если больше и ненулевой, то меняем указатели на строки
					tempstr = a[i];
					a[i]=a[j];
					a[j]=tempstr;
					maxa = a[i][i];
				}
		for (j=0; j <= n; j++) // делим строчку на ее диагональный элемент
			a[i][j]=a[i][j]/maxa;
		for (k = i+1; k < n; k++) { // и вычитаем ее из всех остальных строк
		tempk = a[k][i];
			for(j=0;j<=n;j++)
				a[k][j]-=a[i][j]*tempk;
		}
	}
	x[n-1] = a[n-1][n]; // задаём последний Х
	for (k=n-2; k>=0; k--) { // и вычисляем все предыдущие, используя все найденные
		summ = 0; // сумма произведений X[j]*A[j]
		for (j=k; j < n; j++)
			summ += a[k][j]*x[j]; // вычисление суммы
		x[k] = (a[k][n] - summ) / a[k][k]; // и следующего икса
	}
	for (i = 0; i < n; i++) { // запись в файл и освобождение динамической памяти
		out <<x[i]<<endl;
		delete [] a[i];
	}
	delete [] a;
	in.close();
	out.close();
	return 0;
}
Namolem вне форума Ответить с цитированием
Старый 05.01.2010, 09:55   #3
ПсиХ
 
Регистрация: 04.01.2010
Сообщений: 3
По умолчанию

Спс, у кого есть еще инфа на мою тему кидайте не ленитесь 8-)
ПсиХ вне форума Ответить с цитированием
Старый 04.02.2010, 17:45   #4
ПсиХ
 
Регистрация: 04.01.2010
Сообщений: 3
По умолчанию

вот в моем случае, вводимая матрица там делится на две(модуля и угла комплексного числа в символьной форме). Получаются два массива двумерных и нужно найти максимальный эл-т. Он как бы один на два массива, формула должна быть какая-то, не подскажете какая? Как найти это макс элемент?
ПсиХ вне форума Ответить с цитированием
Старый 04.02.2010, 17:52   #5
QuadroX
323787261
Пользователь
 
Аватар для QuadroX
 
Регистрация: 19.12.2008
Сообщений: 49
По умолчанию

Вот держи автор линк
ICQ: 323787261
Email: pschegolevatykh@gmail.com
QuadroX вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужен кто-нибудь, кто сможет подсказать, как подступиться к программированию Delphi & C++ Koshka_Kali Помощь студентам 2 30.11.2008 13:23
Люди добрые, помогите кто чем сможет. Chuprin2006 Microsoft Office Excel 4 11.06.2008 17:03
Помогите кто сможет, пожалуйста b00s Microsoft Office Access 5 05.04.2008 12:57