Посчитать среднее арифметическое цифр - Turbo Pascal

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

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

В функцию передаётся строка S, в ней есть и пробелы и слова. Пробелы могут быть в любом месте. Есть слова в которых последний символ это цифра . Напишите функцию, которая будет считать среднее арифметическое этих цифр. Строка 5zxcv yuio9 sdfgg poi7 rgn 9876 8 Ответ 7.5 не могу понять, почему считает неверно, помогите, пожалуйста.
Листинг программы
  1. var
  2. S: string;
  3. K: integer;
  4. Sred: real;
  5. function Aver(s: string): real;
  6. var
  7. c: Char;
  8. begin
  9. K := 0;
  10. for c := '1' to '9' do
  11. begin
  12. if( (Pos(c, s) > 0) and (Pos(' ', s) > 0)) then
  13. begin
  14. sred := sred + Ord(c) - ord('0');
  15. K := K + 1;
  16. end;
  17. end;
  18. if k = 0 then
  19. Aver := 0
  20. else
  21. begin
  22. writeln(K,' ',sred);
  23. Aver := sred / k;
  24. end;
  25. end;
  26. begin
  27. Readln(S);
  28. Sred := Aver(S);
  29. Writeln(Sred);
  30. end.

Решение задачи: «Посчитать среднее арифметическое цифр»

textual
Листинг программы
  1. function Aver(s: String): Real;
  2. var k, p, q: Integer; c: Char;
  3. begin
  4.   k:=0; q:=0; s:=s+' ';
  5.   for c:='1' to '9' do begin
  6.     p:=Pos(c+' ',s);
  7.     while p>0 then begin
  8.       Inc(k); q:=q+Ord(c)-Ord('0');
  9.       Delete(s,p,1); Insert('0',s,p); {s[i]:='0';}
  10.       p:=Pos(c+' ',s);
  11.     end;
  12.   end;
  13.   if k=0 then Aver:=0 else Aver:=q/k;
  14. end;

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

  1. В функции Aver объявлены три переменные: k, p и q. Они являются целочисленными типами данных и инициализируются нулем.
  2. Переменная s является строковым типом данных и инициализируется строкой, содержащей символ пробела в начале.
  3. Затем происходит цикл, который выполняется для каждой цифры от 1 до 9.
  4. Внутри цикла переменная p инициализируется позицией текущей цифры в строке s.
  5. Затем происходит цикл while, который выполняется до тех пор, пока переменная p больше нуля.
  6. Внутри цикла while переменные k и q инициализируются значением 0.
  7. Затем происходит увеличение переменной k на единицу и вычисление значения q как произведения текущего символа и его порядкового номера (от 0 до 9).
  8. После этого происходит удаление символа текущей цифры из строки s, заменяя его на символ '0'.
  9. Затем переменная p инициализируется новой позицией следующего символа.
  10. Цикл while повторяется до тех пор, пока переменная p больше нуля.
  11. После окончания цикла while, если переменная k равна 0, то значение функции Aver устанавливается в 0, иначе оно устанавливается в значение q, деленное на k.
  12. Функция заканчивает свое выполнение и возвращает полученное среднее арифметическое.

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


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

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

8   голосов , оценка 3.5 из 5

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

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

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