![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
Доброго времени суток!!!
Дана задача: Ввести файл F из 11 элементов. Определить в нѐм сумму элементов стоящих на позициях, чей номер больше записанного в них значения. Вот что получилось: Код:
program p15;
uses crt;
var
s: real;
a,b,i:integer;
f:file of integer;
procedure vvod;
begin
clrscr;
assign(f,'dat.dat');
rewrite(f);
writeln('Введите данные для заполнения файла: ');
for i:=1 to 11 do
begin
write('Введите ',i, '-элемент: ');
readln(b);
write(f,b);
end;
close(f);
end;
procedure resh;
begin
assign(f, 'dat.dat');
reset(f);
while not eof(f) do
begin
read(f,b);
I:=i+1;
if b>s then
begin
a:=a+b;
s:= s + 1;
end;
write(b);
end;
end;
procedure vivod;
begin
write(' Результат= ',a);
close(f);
end;
begin
vvod;
resh;
vivod;
end.стоящих на позициях, чей номер меньше записанного в них значения, а при замене операции отношения(на 31 строке) и вовсе ничего не суммируется. Подскажите пожалуйста, если не принимать во внимание то, что вся моя программа один сплошной косяк, где я накосячил? Заранее спасибо!! |
|
#2
|
||||
|
||||
|
Если не менять стилистику программы и внести минимальные изменения, то:
Код:
program p15;
{$APPTYPE CONSOLE}
var
f : File of Integer;
Sum : Integer;
procedure vvod;
var
I, J : Integer;
begin
AssignFile(f, 'dat.dat');
Rewrite(f);
WriteLn('Введите данные для заполнения файла: ');
for I := 1 to 11 do
begin
Write('Введите ', i, '-элемент: ');
ReadLn(J);
Write(f, J);
end;
CloseFile(f);
end;
procedure resh;
var
I, J : Integer;
begin
AssignFile(f, 'dat.dat');
Reset(f);
I := 0;
while not eof(f) do
begin
Read(f, J);
inc(I);
if I > J then
inc(Sum, J);
Write(J, ', ');
end;
end;
procedure vivod;
begin
Write(' Результат = ', Sum);
CloseFile(f);
end;
begin
vvod;
resh;
vivod;
end. |
| Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
PATRIOT.34 (21.12.2014)
| ||