С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
bodrik
0 / 0 / 0
Регистрация: 14.12.2009
Сообщений: 2
#1

СЛАУ метод умножение вычитания - C++

27.12.2009, 12:25. Просмотров 387. Ответов 0
Метки нет (Все метки)

Вобщем проблемка такая,вот собственно для начала задача сама
Создайте программу, реализующую решение системы N линейных уравнений с N неизвестными по следующей схеме:
Схема умножения и вычитания
На вход программы должен подаваться текстовый файл, содержащий в первой строке число уравнений; во второй и последующих строках - матрицы коэффициентов и свободных членов. По запросу результаты вычислений должны также записываться в текстовый файл.
Т.е. сначалаа надо привести матрицу к треугольному виду,а потом найти корни,но у меня не все матрицы приводятся к треугольному виду...я уже сбился с толку что делать,исправьте код пожалуйста
Код
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
int main()
{
FILE *file_in, *file_out;
int a=0,y=0;
int n,i, j, x,l,tmp,s;
float k=0,max,det,h;
file_in=fopen("file.txt", "r");
fscanf(file_in, "%d", &a);
float**matrix;
float *buf;
float *root;
matrix=(float**)malloc((a)*sizeof(float));
for(i=0; i<a; i++)
matrix[i]=(float *)malloc((a)*sizeof(float));
buf=(float*)malloc((a)*sizeof(float));
root=(float*)malloc((a)*sizeof(float));
printf("%d\n",a);
for(i = 0; i < a; i++)
{

	for(j = 0; j <a; j++)
			{
				fscanf(file_in, "%f", &matrix[i][j]);
				printf("%2.0f ", matrix[i][j]);
			}
printf("\n");
}
for(i = 0; i < a; i++)
{
	fscanf(file_in, "%f", &buf[i]);
	printf("%2.0f \n", buf[i]);
}
fclose(file_in);
//perevod v treygol
for (i=0;i<a;i++) 
s=0;
{


	for (j=i;j<a;j++)
		{
			if (matrix[j][i]!=0)
				{
					s=j;
					j=n+1;
				}
		}
if (s!=0)
{
for (j=0;j<a;j++)
		{
			tmp=matrix[i][j];
			matrix[i][j]=matrix[s][j];
			matrix[s][j]=tmp;
		}
tmp=buf[i];
buf[i]=buf[s];
buf[s]=tmp;
}
}
	for (j=0;j<a;j++)
	{
		for (i=j+1;i<a;i++)
			{
			if (matrix[j][j]!=0)	
				{
					k=matrix[i][j]/matrix[j][j];
					printf("k=%f\n",k);
				}
			else k=0;
					for (l=0;l<a;l++)
						{
							matrix[i][l]-=k*matrix[j][l];
						}
				buf[i]-=k*buf[j];
			}
			
	}
printf("Triangle matrix\n");	
for(i = 0; i < a; i++)
{

	for(j = 0; j <a; j++)
			{
				printf("%2.0f ", matrix[i][j]);
			}
printf("\n");
}
printf("Your new vector\n");
for (i=0;i<a;i++)
		{
			printf ("%.2f ", buf[i]);
		}
printf("\n");
det=1;
	for (i=0;i<a;i++)
		{
			det*=matrix[i][i];
		}
printf("%f\n",det);
if (det==0) printf ("your system has infinite number of solutions or no solution\n");
else
{
 for (i=a-1;i>0;i--)
     {
          h=buf[i];
          for (j=i+1;j<a;j++)
               {
                    h-=matrix[i][j]*root[j];
            }
          root[i]=h/matrix[i][i];
          
     }
    
for (i=0;i<a;i++)
{
	printf("%f ",root[i]);
}
}
system("Pause");
return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2009, 12:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос СЛАУ метод умножение вычитания (C++):

СЛАУ. Метод обратной матрицы, метод Гаусса, метод Крамера, метод Зейделя - C++
Помогите ребят. Не могу построить алгоритмы для этих методов Язык C++

Рекурсия. Умножение чисел путём сложения/вычитания - C++
Код: // b должен быть больше нуля, чтобы не получилось бесконечной рекурсии int mystery(int a, int b) { if(b == 1) ...

Метод решения СЛАУ - C++
Здравствуйте! Вот задача с E-Olymp (сложность 91%). Есть решение, но ни один тест не пройден, хотя полностью совпадает с онлайн-сервисами....

СЛАУ метод Зейделя - C++
Решить СЛАР методом Зейделя вида АХ=В с точностью до 0,0001. Пример на рисунке ниже что не могу не как реализовать нормально. Точнее...

Метод Ньютона для СЛАУ - C++
Здравствуйте требуется написать написать программу, ищущую решение системы(вложения), с указанной точностью и уже данным значениями...

Матричный метод решения СЛАУ - C++
Здравствуйте уважаемые програмисты, не могу осилить данный метод, и в нете инфы очень мало, может у кого есть готовый исходник? Теория...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.12.2009, 12:25
Привет! Вот еще темы с ответами:

Метод прогонки для СЛАУ - C++
Народ, я почти умер. Писал метод прогонки, работает неправильно, выдает что-то близкое, но неточно. код: #include...

СЛАУ(метод квадратного корня) - C++
Ребят, помогите с кодом, есть система вида Аx=b , где A - матрица (n*n), b - вектор, x - вектор розвязания. Нужно найти вектор x. ...

Метод простых итераций для СЛАУ - C++
Доброго времени суток всем!!! решаю СЛАУ методом простых итераций, проблема вот в чем: не могу понять, как сделать расчет по к-ым...

Метод Гаусса для решения СЛАУ - C++
Здравствуйте! У меня есть алгоритм решения СЛАУ методом Гаусса, но почему-то он не работает((( Я проверил промежуточные матрицы, все ОК! И...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.