Контрольные задания > Исправьте ошибки в коде программы на Pascal, чтобы она вычисляла сумму нечётных цифр целого числа.
Вопрос:
Исправьте ошибки в коде программы на Pascal, чтобы она вычисляла сумму нечётных цифр целого числа.
Ответ:
Привет, ребята! Давайте разберем этот код вместе и исправим ошибки. Наша задача – написать программу на Pascal, которая находит сумму нечетных цифр заданного целого числа. Вот исправленный код с объяснениями:
```pascal
program SumOddDigits;
function SumOfOddDigits(n: integer): integer;
var
sum, digit: integer;
begin
sum := 0; // Инициализация суммы нечетных цифр
while n > 0 do
begin
digit := n mod 10; // Получаем последнюю цифру числа
if (digit mod 2) <> 0 then // Проверяем, является ли цифра нечетной
sum := sum + digit; // Если цифра нечетная, добавляем её к сумме
n := n div 10; // Убираем последнюю цифру из числа
end;
SumOfOddDigits := sum; // Возвращаем сумму нечетных цифр
end;
var
n, result: integer;
begin
writeln('Введите целое число:');
readln(n);
result := SumOfOddDigits(n); // Вызываем функцию для вычисления суммы
writeln('Сумма нечетных цифр: ', result);
end.
```
**Пояснения к исправлениям:**
1. **Инициализация суммы:**
* Внутри функции `SumOfOddDigits` добавили инициализацию переменной `sum` значением 0. Это необходимо для того, чтобы правильно накапливать сумму нечетных цифр.
2. **Цикл `while`:**
* Цикл `while n > 0 do` позволяет нам обрабатывать каждую цифру числа, пока число не станет равным 0.
3. **Получение последней цифры:**
* `digit := n mod 10;` Эта строка получает последнюю цифру числа `n` с помощью операции `mod` (остаток от деления на 10).
4. **Проверка на нечетность:**
* `if (digit mod 2) <> 0 then` Здесь мы проверяем, является ли цифра `digit` нечетной. Если остаток от деления на 2 не равен 0, значит, цифра нечетная.
5. **Добавление к сумме:**
* `sum := sum + digit;` Если цифра нечетная, добавляем её к переменной `sum`.
6. **Удаление последней цифры:**
* `n := n div 10;` Удаляем последнюю цифру из числа `n` с помощью операции `div` (целочисленное деление на 10).
7. **Возврат результата:**
* `SumOfOddDigits := sum;` После обработки всех цифр возвращаем накопленную сумму нечетных цифр.
8. **Ввод числа и вывод результата:**
* В основной части программы (`begin ... end.`) добавили ввод числа с клавиатуры (`readln(n)`) и вывод результата на экран (`writeln('Сумма нечетных цифр: ', result);`).
**Теперь программа будет работать правильно и вычислять сумму нечетных цифр любого целого числа.**