Найти среднее арифметическое положительных чисел файла - Pascal

Узнай цену своей работы

Формулировка задачи:

Задание: Создать типизированный файл, содержащий 20 целых чисел. Найти среднее арифметическое положительных чисел файла. Код:
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.
Ввел числа 1 2 3 4 5 6 а остальные все отрицательные, в итоге получилось 3.5000000000000Е+000 ответ то правильный только зачем прога дописывает нули Помогите найти откуда берутся эти лишние нули и сделать так чтобы был просто ответ.

Решение задачи: «Найти среднее арифметическое положительных чисел файла»

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.

Объяснение кода листинга программы

  1. Объявление переменных:
    • f: file of Integer; - объявление переменной f как файл целых чисел
    • i, n, s: Integer; - объявление переменных i, n и s как целых чисел
  2. Генерация случайных чисел и запись их в файл:
    • Randomize; - инициализация генератора случайных чисел
    • Assign(f,'file.dat'); Rewrite(f); - указание имени файла 'file.dat' и его открытие для записи
    • for n:=1 to 20 do begin - начало цикла, который будет повторяться 20 раз
    • i:=-50+Random(101); - генерация случайного числа от -50 до 50 и его сохранение в переменной i
    • Write(f,i); Write(' ',i); - запись числа i в файл и вывод его на экран
    • end; WriteLn; - окончание цикла и переход на новую строку
  3. Чтение чисел из файла, вычисление суммы и их количества:
    • Reset(f); s:=0; n:=0; - открытие файла для чтения и инициализация переменных s и n
    • while not EoF(f) do begin - цикл, который выполняется до тех пор, пока не будет достигнут конец файла
    • Read(f,i); - чтение числа из файла в переменную i
    • if i>0 then begin - проверка, является ли число i положительным
    • s:=s+i; Inc(n); - если число положительное, то его значение суммируется с переменной s и увеличивается счётчик положительных чисел n на 1
  4. Закрытие файла и вывод результата:
    • Close(f); - закрытие файла
    • if n=0 then WriteLn('Положительных нет') - проверка, есть ли в файле положительные числа, и если их нет, то выводится соответствующее сообщение
    • else WriteLn('Среднее положительных: ',s/n:0:2); - иначе выводится среднее арифметическое положительных чисел с двумя знаками после запятой.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.538 из 5
Похожие ответы