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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ программа методом трапеции http://www.cyberforum.ru/cpp-beginners/thread80453.html
составить таблицу значений функции http://www.loadpicture.ru/images/1212af.jpg для 1<=X<=2 c шагом h=0.1 мотодом трапеции для С кто может помогите плиз,очень нужно! заранее благодарен! ...
C++ Функции Файл содержит целые числа. Заменить все числа, представляющие число три в целочисленной степени сочетанием 3^n (где n – степень). Например: 9 – 3^2, 27 – 3^3 http://www.cyberforum.ru/cpp-beginners/thread80447.html
C++ Функции для работы с текстовыми файлами
Файл содержит целые числа. Вычислить сумму значений из файла, в двоичном представлении которых K разрядов установлено в единицу. Помогите решить задачу!!!!!
qsort C++ C++
Помогите, плиз,разобраться с этой функцией, я прогу написала, но мало чего понимаю в ней, я написала в трех файлах, так и выкладываю. #ifndef _STRUCT_H #define _STRUCT_H struct Data { ...
C++ Работа с файлами http://www.cyberforum.ru/cpp-beginners/thread80439.html
Задача: в файле Y1 задана матрица вещественных чисел. Сформировать файл Y2, в котором строки матрицы упорядочены по убыванию элементов первого столбца........Кому не сложно, помогите в написании этой...
C++ Рекурсия: определить, допускается или нет произвольная строка s заданной маской m Маска файла представляет собой строку, состоящую из символов, допустимых в имени файла, и знаков ‘?’ и ‘*’. Вопросительный знак можно заменять на произвольный символ, допустимый в имени файла, а ‘*’... подробнее

Показать сообщение отдельно
bodrik

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

27.12.2009, 12:25. Просмотров 386. Ответов 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;
}
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru