• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Помогите, пожалуйста, с программой на языке Паскаль

  • Автор темы Автор темы puzinka
  • Дата начала Дата начала

puzinka

Ученик
Регистрация
13 Фев 2011
Сообщения
3
Реакции
0
Баллы
0
Помогите, пожалуйста, с программой на языке Паскаль

Задание:Программа должна находить численные решения системы линейных уравнений. Программа считывает систему из входного файла (формат которого указан в Приложении 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:=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;
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:0:3);
writeln('finish');
end
else
writeln('System doesn''t converge');

readkey;
close(f);
end.

Программу делала не я поэтому ничего не понимаю.Нужно сделать 2 матрицы, одну программа должна считать, а 2-я должна быть ошибочная, программа должна выводить 'invalid input matrix!- у меня так не получается и не могу понять почему, помогите пожалуйста!!заранее спасибо!
 
Программу делала не я поэтому ничего не понимаю.Нужно сделать 2 матрицы, одну программа должна считать, а 2-я должна быть ошибочная, программа должна выводить 'invalid input matrix!- у меня так не получается и не могу понять почему, помогите пожалуйста!!заранее спасибо!
Ну так задайте в "ошибочном" файле матрицу из 8 или более строк - она и сообщит об ошибке.
 
Пробовала так делать, ничего не получается.
 
Пробовала так делать, ничего не получается.
А - ну всё ясно. Уж так программа написана.
Если матрица "неправильная", то цикл задания имени файла повторяется, но начинается этот цикл с команды clrscr, то есть очистки экрана. Поэтому программа действительно генерирует сообщение 'invalid input matrix!' и... тут же его стирает!
Выход - выведите команду clrscr за цикл, т.е. перетащите её в позицию сразу за первым begin, так, чтобы оператор repeat шел после неё.

Сразу скажу - помочь с дальнейшей отладкой программы не смогу, и вот почему. Есть общепринятый порядок расположения индексов матрицы A[m,n]: сначала - номер строки (m), потом - номер столбца (n). Автору же программы непременно захотелось повыпендриваться, и он (она) задает обратную нумерацию: столбец-строка. Можно, конечно, и так, но мне, например, чтобы разобрать такую программу нужно вывернуть мозги наизнанку, к чему расположения не чувствую. Извините.
 
Понятно, я тоже так поняла что с программой что то не так.Спасибо вам за помощь попробую исправить, может быть что-нибудь и получиться.)
 
Назад
Сверху