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

    509) На обработку поступает последовательность из четырёх неотрицательных целых чисел (некоторые числа могут быть одинаковыми). Нужно написать программу, которая выводит на экран количество делящихся нацело на 4 чисел в исходной последовательности и максимальное делящееся нацело на 4 число. Если делящихся нацело на 4 чисел нет, требуется на экран вывести «NO». Известно, что вводимые числа не превышают 1000. Программист написал программу неправильно.

    n = 4
    count = 0 
    maximum = 1000 
    for i in range (1, n+1):
      x = int(input())
      if x % 4 == 0: 
        count += 1
        if x < maximum:
          maximum = x
    if count > 0: 
      print (count)
      print (maximum) 
    else:  
      print ("NO")
    const n = 4; 
    var i, x: integer; 
    maximum, count: integer; 
    begin   
     count := 0; 
     maximum := 1000; 
     for i := 1 to n do begin
      read(x); 
      if x mod 4 = 0 then begin 
       count := count + 1;
       if x < maximum then
         maximum := x;
      end;
     end;
     if count > 0 then begin
      writeln(count);
      writeln(maximum);
     end
     else  
       writeln('NO');
    end.
    #include <iostream>
    using namespace std;  
    int main() {
      const int n = 4;
      int x, maximum, count;
      count = 0;
      maximum = 1000;
      for (int i = 1; i <= n; i++) {
       cin >> x;
       if (x % 4 == 0) {
         count++;
         if (x < maximum) 
           maximum = x;
       }
      }
      if (count > 0) {
       cout << count << endl;
       cout << maximum << endl;
      }   
      else
       cout << "NO" << endl;
      return 0;
     }

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





    Комментарии