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