Найти среднее арифметическое положительных чисел файла - Pascal
Формулировка задачи:
Задание:
Создать типизированный файл, содержащий 20 целых чисел. Найти среднее арифметическое положительных чисел файла.
Код:
Ввел числа 1 2 3 4 5 6 а остальные все отрицательные, в итоге получилось 3.5000000000000Е+000
ответ то правильный только зачем прога дописывает нули
Помогите найти откуда берутся эти лишние нули и сделать так чтобы был просто ответ.
program Project1;
uses
SysUtils;
var
f:file of real;
sr, x, a:real;
k,i:integer;
begin
assign(f,'file.dat');
rewrite(f);
for I := 0 to 19 do begin
readln(x);
write(f,x);
end;
a:=0;
k:=0;
reset(f);
while not eof(f) do begin
read(f,x);
for I := 0 to 19 do begin
if x>0 then begin
a:=a+x;
k:=k+1;
end;
end;
i:=i+1;
end;
sr:=a/k;
close(f);
write('Sr=',sr);
readln;
end.Решение задачи: «Найти среднее арифметическое положительных чисел файла»
textual
Листинг программы
var
f: file of Integer;
i, n, s: Integer;
begin
Randomize;
Assign(f,'file.dat'); Rewrite(f);
for n:=1 to 20 do begin
i:=-50+Random(101); Write(f,i); Write(' ',i);
end; WriteLn;
Reset(f); s:=0; n:=0;
while not EoF(f) do begin
Read(f,i);
if i>0 then begin
s:=s+i; Inc(n);
end;
end;
Close(f);
if n=0 then WriteLn('Положительных нет')
else WriteLn('Среднее положительных: ',s/n:0:2);
end.
Объяснение кода листинга программы
- Объявление переменных:
f: file of Integer;- объявление переменной f как файл целых чиселi, n, s: Integer;- объявление переменных i, n и s как целых чисел
- Генерация случайных чисел и запись их в файл:
Randomize;- инициализация генератора случайных чиселAssign(f,'file.dat'); Rewrite(f);- указание имени файла 'file.dat' и его открытие для записиfor n:=1 to 20 do begin- начало цикла, который будет повторяться 20 разi:=-50+Random(101);- генерация случайного числа от -50 до 50 и его сохранение в переменной iWrite(f,i); Write(' ',i);- запись числа i в файл и вывод его на экранend; WriteLn;- окончание цикла и переход на новую строку
- Чтение чисел из файла, вычисление суммы и их количества:
Reset(f); s:=0; n:=0;- открытие файла для чтения и инициализация переменных s и nwhile not EoF(f) do begin- цикл, который выполняется до тех пор, пока не будет достигнут конец файлаRead(f,i);- чтение числа из файла в переменную iif i>0 then begin- проверка, является ли число i положительнымs:=s+i; Inc(n);- если число положительное, то его значение суммируется с переменной s и увеличивается счётчик положительных чисел n на 1
- Закрытие файла и вывод результата:
Close(f);- закрытие файлаif n=0 then WriteLn('Положительных нет')- проверка, есть ли в файле положительные числа, и если их нет, то выводится соответствующее сообщениеelse WriteLn('Среднее положительных: ',s/n:0:2);- иначе выводится среднее арифметическое положительных чисел с двумя знаками после запятой.