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

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

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

Задание: Создать типизированный файл, содержащий 20 целых чисел. Найти среднее арифметическое положительных чисел файла. Код:
Листинг программы
  1. program Project1;
  2. uses
  3. SysUtils;
  4. var
  5. f:file of real;
  6. sr, x, a:real;
  7. k,i:integer;
  8. begin
  9. assign(f,'file.dat');
  10. rewrite(f);
  11. for I := 0 to 19 do begin
  12. readln(x);
  13. write(f,x);
  14. end;
  15. a:=0;
  16. k:=0;
  17. reset(f);
  18. while not eof(f) do begin
  19. read(f,x);
  20. for I := 0 to 19 do begin
  21. if x>0 then begin
  22. a:=a+x;
  23. k:=k+1;
  24. end;
  25. end;
  26. i:=i+1;
  27. end;
  28. sr:=a/k;
  29. close(f);
  30. write('Sr=',sr);
  31. readln;
  32. end.
Ввел числа 1 2 3 4 5 6 а остальные все отрицательные, в итоге получилось 3.5000000000000Е+000 ответ то правильный только зачем прога дописывает нули Помогите найти откуда берутся эти лишние нули и сделать так чтобы был просто ответ.

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

textual
Листинг программы
  1. var
  2.   f: file of Integer;
  3.   i, n, s: Integer;
  4. begin
  5.   Randomize;
  6.   Assign(f,'file.dat'); Rewrite(f);
  7.   for n:=1 to 20 do begin
  8.     i:=-50+Random(101); Write(f,i); Write(' ',i);
  9.   end; WriteLn;
  10.   Reset(f); s:=0; n:=0;
  11.   while not EoF(f) do begin
  12.     Read(f,i);
  13.     if i>0 then begin
  14.       s:=s+i; Inc(n);
  15.     end;
  16.   end;
  17.   Close(f);
  18.   if n=0 then WriteLn('Положительных нет')
  19.   else WriteLn('Среднее положительных: ',s/n:0:2);
  20. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы