Показать сообщение отдельно
Старый 13.02.2011, 16:34   #1 (permalink)
puzinka
Новичок
 
Регистрация: 13.02.2011
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Помогите, пожалуйста, с программой на языке Паскаль

Задание:Программа должна находить численные решения системы линейных уравнений. Программа считывает систему из входного файла (формат которого указан в Приложении 1).
При запуске программа запрашивает имя входного и выходного файлов. Затем программа запрашивает переменные с заданными диапазонами. Результат сохраняет в выходном файле.
Количество переменных должно быть не более 7. Количество уравнений не более 7. Программа находит численное решение с точностью до 0,1. Максимальный размер диапазона - 3.
есть программа:
Цитата:
uses crt;
var
i, j, count, k, l, exit : byte;
x, y : array[1..7] of extended;
c : array[1..8,1..7] of real;
matr : array[1..7,1..7] of real;
a, b, buf : real;
z : integer;
min, sum : extended;
f : text;
flag : boolean;
name, str : string;

begin
repeat
flag:=true;
clrscr;

writeln('Input file?');
readln(name);
assign(f,name);
reset(f);
count:=0;

{определение количества сток в текстовом файле}
repeat
readln(f,str);
inc(count);
str:='';
until eof(f);

close(f);


if count >7 then
begin
flag:=false;
writeln('invalid input matrix!');
end
else
begin
reset(f);
for j:=1 to count do
for i:=1 to count+1 do read(f,c[i,j]);
close(f);
end;
until flag;



writeln('output file?');
readln(name);

for j:=1 to count do
for i:=1 to count do
begin
if i=j then
matr[i,j]:=(c[count+1,j] / c[i,j])
else
matr[i,j]:= -(c[i,j] / c[j,j]);
end;

exit:=0;
z:=0;
for j:=1 to count do y[j]:=0;

for i:=2 to count do x[i]:=0;

repeat
for j:=1 to count do
begin
x[j]:=0;
for i:=1 to count do
if i<>j then x[j]:=x[j]+matr[i,j]*x[i];
x[j]:=x[j]+matr[j,j]
end;

exit:=1;
for j:=1 to count do
if (round(x[j]*10))<>(round(y[j]*10)) then exit:=0;

if exit = 0 then
for j:=1 to count do y[j]:=x[j];

inc(z);
if z>100 then exit:=2;
until exit<>0;


if exit = 1 then
begin
assign(f,name);
rewrite(f);
for i:=1 to count do writeln(f,x[i]:0:3);
writeln('finish');
end
else
writeln('System doesn''t converge');

readkey;
close(f);
end.
Программу делала не я поэтому ничего не понимаю.Нужно сделать 2 матрицы, одну программа должна считать, а 2-я должна быть ошибочная, программа должна выводить 'invalid input matrix!- у меня так не получается и не могу понять почему, помогите пожалуйста!!заранее спасибо!
puzinka вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070