Помощь - Поиск - Пользователи - Календарь
Полная версия: Как устранить ошибку? > Информатика / Программирование
Образовательный студенческий форум > Другие дисциплины > Информатика / Программирование
savedata
Дан файл f, компоненты которого являются действительными числами. Найти наибольшее из значений модулей компонент с нечетными номерами.

Program z472v;
Uses crt;
Var f:file of integer;
v,k,max:integer;
Begin
clrscr;
Assign(f,'execute.dat');
Reset(f);
max:=0;

while not eof(f) do
begin
read(f,v);
writeln(v:0);
k:=k+1;
if (k mod 2<>0) and (abs(v)>max) then max:=abs(v);
end;
close(f);
writeln('naibolshii modul komponent s necetnim nomerom - ',max:0);
readln;
end.

Содержание файла execute.dat:

2
-3
12
44
-21
23
13
-15
8
savedata
После перезагрузки компа ошибка исчезла. но теперь из файла считывается какая то ерунда:

3378
11530
3379
12554
3378
13322
3380
11530
12594
2573
13106
2573
13105
2573
12589
3381
14346
naibolshii modul komponent s necetnim nomerom - 14346

почему?
Борман
Переменная K не инициализирована... наверное.
savedata
Оказалось что я в файл execute.dat просто через блокнот ввел данные) а нужно интерпретировать чтобы pascal понял)

Я осуществил ввод через программу и все заработало:

Program z472v;
Uses crt;
Var f:file of integer;
i,n,v,k,max:integer;
s:string;
Begin
clrscr;
Assign(f,'execute.dat');

write('create[C] a new or use(any key) an existing file? - ');
readln(s);

if (s='c') or (s='C') then
begin
Rewrite(f);

Write('enter n - ');
Readln(n);

for i:=1 to n do
begin
readln(v);
write(f,v);
end;

end;


Reset(f);
max:=0;

while not eof(f) do
begin
read(f,v);
writeln(v:0);
k:=k+1;
if (k mod 2<>0) and (abs(v)>max) then max:=abs(v);
end;
close(f);
writeln('naibolshii modul komponent s necetnim nomerom - ',max:0);
readln;
end.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2025 Invision Power Services, Inc.