Найти среднее арифметическое положительных чисел файла - 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);
- иначе выводится среднее арифметическое положительных чисел с двумя знаками после запятой.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д