×
  • 1. Системы счисления
  • 2. Логические функции
  • 3. Анализ информационных моделей
  • 4. Файловая система и базы данных
  • 5. Кодирование и декодирование. Условие Фано
  • 6. Выполнение и анализ простых алгоритмов
  • 7. Адресация в электронных таблицах
  • 8. Анализ программ с циклами
  • 9. Скорость передачи, объем памяти, время передачи
  • 10. Кодирование, комбинаторика
  • 11. Рекурсивные алгоритмы
  • 12. Адресация в сетях TCP/IP
  • 13. Вычисление количества информации
  • 14. Анализ и выполнение алгоритмов для исполнителя
  • 15. Поиск путей в графе
  • 16. Позиционные системы счисления
  • 17. Запросы в поисковых системах
  • 18. Логические выражения и множества
  • 19. Анализ программы по работе с массивом
  • 20. Анализ программ с циклами
  • 21. Анализ программ с циклами и подпрограммами
  • 22. Динамическое программирование
  • 23. Системы логических уравнений
  • 24. Исправление фрагмента программы и ошибок
  • 25. Программа на обработку массива
  • Спасибо за внимание
  • Разбор задачи № 24. Исправление фрагмента программы и ошибок

    Теория по задаче

    Разбор текущей задачи
    Цикл while Python
    Обход цифр числа Python

    Условие задачи

    512) На обработку поступает натуральное число, не превышающее 109. Нужно написать программу, которая выводит на экран минимальную чётную цифру этого числа. Если в числе нет чётных цифр, требуется на экран вывести «NO». Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на трех языках программирования.

    N = int(input()) 
    minDigit = N % 10 
    while N > 0:
      digit = N % 10
      if digit % 2 == 0:
        if digit < minDigit:
          minDigit = digit
      N = N // 10
    if minDigit == 0:
      print("NO")
    else:
      print(minDigit)
    var 
     N: longint; 
     digit, minDigit:integer;
    begin
      readln(N);
      minDigit := N mod 10;
      while N > 0 do begin 
        digit := N mod 10;
        if digit mod 2 = 0 then
           if digit < minDigit then
             minDigit := digit;
        N := N div 10;
      end;
      if minDigit = 0 then
        writeln('NO')
      else
        writeln(minDigit)
    end.
    #include <iostream> 
    using namespace std;  
    int main() {
      long N;
      int digit, minDigit;
      cin >> N;
      minDigit = N % 10;
      while (N > 0) {
        digit = N % 10;
        if (digit % 2 == 0)
          if (digit < minDigit)
            minDigit = digit;
        N = N / 10; 
      } 
      if (minDigit == 0) 
        cout << "NO" << endl;
      else 
        cout << minDigit << endl; 
     }

    Последовательно выполните следующее:
    1. Напишите, что выведет эта программа при вводе числа 231.
    2. Приведите пример такого трёхзначного числа, при вводе которого приведённая программа, несмотря на ошибки, выдаёт верный ответ.
    3. Найдите допущенные программистом ошибки и исправьте их.