Форум программистов, компьютерный форум CyberForum.ru

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

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

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

27.12.2009, 12:25. Просмотров 359. Ответов 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2009, 12:25     СЛАУ метод умножение вычитания
Посмотрите здесь:

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

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

Как можно найти алгебраическое дополнение в матрице (матричный метод, СЛАУ) - C++
Здравствуйте! Подскажите,пожалуйста, как можно найти алгебраическое дополнение в матрице(матричный метод,СЛАУ). Как находить дополнение я...

Задано 4 матрицы. Провести сложение, умножение, умножение на число - C++
Задано 4 матрицы A,B,C,D размером 4х4.Вычеслить такие матрицы: F,G,T. G=3/4 A+B F=B*(2D) T=c/5

Класс Квадратная матрица. Методы: умножение на матрицу, умножение на константу, вывод элементов матрицы на дисплей - C++
Задание: Класс «Квадратная матрица». Методы: умножение на матрицу, умножение на константу, вывод элементов матрицы на дисплей. Нужно...

Вычитания в столбик - C++
Вот написала функцию вычитания в столбик но не работает, корректируйте пожалуйста #include &lt;string&gt; #include &lt;iostream&gt; string...

Объяснить результат вычитания - C++
100010 минус 6 = 599900, или что или как? прошу обьяснений...

Реализация вычитания двоичного кода - C++
Даны два массива, например 110001 и 11111. Не знаю как создать цикл, в частности занимание. dif = A - B + carry; // carry - перенос if...

Операция вычитания через сложение - C++
Доброго времени суток, форумчане! Помогите с задачей, пожалуйста! заданы: 1)if - then - else //тут всё понятно 2)рекурсия...

Программа вычитания значения а в n степени - C++
Дано действительное число а, натуральное число n.Составить программу вычитания значения а в n степени.Результаты округлитть до тысячных.


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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