Для решения этой задачи в Pascal наиболее эффективным методом является использование цикла while. Мы будем последовательно "отсекать" последнюю цифру числа с помощью операции mod (остаток от деления) и уменьшать само число с помощью div (целочисленное деление). Текст программы pascal
program NumberAnalysis; var number, temp, digit: integer; count, sum: integer; average: real; begin { Ввод исходного числа } write('Введите целое число: '); readln(number); { Работаем с абсолютным значением, чтобы программа корректно считала отрицательные числа } temp := abs(number); count := 0; sum := 0; { Если введено 0, цикл не сработает, поэтому обрабатываем этот случай } if temp = 0 then begin count := 1; sum := 0; end else begin while temp > 0 do begin digit := temp mod 10; { Получаем последнюю цифру } sum := sum + digit; { Прибавляем к общей сумме } count := count + 1; { Увеличиваем счетчик количества } temp := temp div 10; { Удаляем последнюю цифру из числа } end; end; { Вычисление среднего арифметического } if count > 0 then average := sum / count else average := 0; { Вывод результатов } writeln('Количество цифр: ', count); writeln('Сумма цифр: ', sum); writeln('Среднее арифметическое: ', average:0:2); readln; end. Use code with caution.Разбор логики работыabs(number): Мы используем модуль числа. Если пользователь введет-123, программа должна считать цифры1, 2, 3, игнорируя минус.- Цикл
while temp > 0:temp mod 10извлекает последнюю цифру. Например, .temp div 10убирает последнюю цифру. Например, .
- Среднее арифметическое: Вычисляется как отношение суммы цифр к их количеству. Переменная
averageимеет типreal, так как результат деления редко бывает целым числом. - Форматированный вывод: Инструкция
:0:2в оператореwritelnограничивает вывод среднего арифметического двумя знаками после запятой.
Пример работы Если ввести число 456:
- Количество цифр: 3
- Сумма: Среднее:
Хотите, чтобы я модифицировал код для работы с очень длинными числами, которые не помещаются в стандартный тип integer?
Форма ответа
Ответы и вопросы пользователей