Задание:Программа должна находить численные решения системы линейных уравнений. Программа считывает систему из входного файла (формат которого указан в Приложении 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!- у меня так не получается и не могу понять почему, помогите пожалуйста!!заранее спасибо!