×
  • 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. Программа на обработку массива
  • Спасибо за внимание
  • Условие задачи

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

    N = int(input())
    t = 0
    m = t
    while N > 1:
       d = N % 10
       if d % 2 == 0 or d > m:
          m = m + d
       N = N // 10
    if m == t:
       print("NO")
    else:
       print(m)
    var N, d, m, t: longint;
    begin
      read(N);
      t := 0;
      m := t;
      while N > 1 do begin
        d := N mod 10;
        if (d mod 2=0) or (d>m) then
           m := m + d;
        N := N div 10;
      end;
      if m = t then 
         writeln('NO')
      else 
         writeln(m)
    end.
    #include <iostream>
    using namespace std;
    int main() {
      int N, d, m, t;
      cin >> N;
      t = 0;
      m = t;
      while (N > 1) {
      d = N % 10;
      if (d % 2 == 0 || d > m)
           m := m + d;
           N := N / 10;
      }
      if (m == t)
         cout << "NO";
      else
         cout << m;
    }

    Последовательно выполните следующее.
    1. Напишите, что выведет эта программа при вводе числа 132.
    2. Какое наибольшее число может быть выведено при вводе трёхзначного числа? Сколько существует таких чисел N, при вводе которого программа выведет такой ответ?
    3. Найдите допущенные программистом ошибки и исправьте их.





    Комментарии