Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Помогите найти ошибку в программе.

Автор: Бездарь 28.05.2007 15:22

вот задача: Дана матрица А(МхМ), записанная в текстовый файл. Сформировать вектор В(М) по следующим правилам: если i-тая строка матрицы (i=1,2, …, m) есть убывающая последовательность, элементу вектора bi присвоить значение -1, в противном случае значение 1. Полученный файл дописать в файл.

 
program z;

const m=5;
var f:text;
a:array[1..m,1..m] of integer;
b:array[1..m] of integer;
i,j:integer;

begin

assign(f,'1.txt');
reset(f);
for i:=1 to m do
for j:=1 to m do
read(f,a[i,j]);
close(f);

for i:=1 to m do
begin
b[i]:=-1;
for j:=2 to m do
if a[i,j-1]<=a[i,j] then b[i]:=1;
end;

append(f);
for i:=2 to m do
write(f,b[i]:3);
close(f);

end.

.

Задача вычисляет не правильно. Что не так?

Автор: Lapp 28.05.2007 15:45

М
Бездарь, пожалуйста, приведи название темы в соответствие с Правилами (ссылка вверху страницы)


Автор: мисс_граффити 28.05.2007 20:04

for i:=2 to m do
write(f,b[i]:3);

а почему от 2, а не от 1?

Автор: Bard 28.05.2007 20:32


assign(f,'l.txt'); {... ошибка твоя была здесь ...}
append(f);
for i:=2 to m do
write(f,b[i]:3);
close(f);


ты забыл поставить assign(...) перед append(f) smile.gif

Автор: мисс_граффити 28.05.2007 20:39

Bard, правда? а зачем ВТОРОЙ раз устанавливать связь с ТЕМ ЖЕ файлом? Ты думаешь, после закрытия файла она теряется?
а может быть, ты попробовал запустить исправленный вариант и увидел, что он работает правильно (после добавления assign)?