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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ программа методом трапеции http://www.cyberforum.ru/cpp-beginners/thread80453.html
составить таблицу значений функции http://www.loadpicture.ru/images/1212af.jpg для 1<=X<=2 c шагом h=0.1 мотодом трапеции для С кто может помогите плиз,очень нужно! заранее благодарен! Добавлено через 44 минуты help!
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 { int den; int mesyac; int god;
C++ Работа с файлами http://www.cyberforum.ru/cpp-beginners/thread80439.html
Задача: в файле Y1 задана матрица вещественных чисел. Сформировать файл Y2, в котором строки матрицы упорядочены по убыванию элементов первого столбца........Кому не сложно, помогите в написании этой программы, просто я новичок в Си и пока мало в нём разбираюсь, а задачу нужно сдать до сессии, иначе не допуск к экзамену((
C++ Рекурсия Маска файла представляет собой строку, состоящую из символов, допустимых в имени файла, и знаков ‘?’ и ‘*’. Вопросительный знак можно заменять на произвольный символ, допустимый в имени файла, а ‘*’ – на произвольную (в том числе пустую) строку из таких символов. Если некоторая строка может быть получена таким способом, то говорят, что она допускается заданной маской. Написать функцию,... подробнее

Показать сообщение отдельно
bodrik
Сообщений: n/a

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

27.12.2009, 12:25. Просмотров 373. Ответов 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