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

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

    Разбор текущей задачи

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

    475) Определите число, которое будет напечатано в результате выполнения следующего алгоритма. Для Вашего удобства алгоритм представлен на трех языках программирования.

    def F(x):
     return abs(abs(x-6)+abs(x+6)-16)+2  
    
    a = -20
    b = 20 
    M = a 
    R = F(a) 
    for t in range(a, b + 1):
       if (F(t) <= R):
         M = t
         R = F(t)
    print (M + R)
    var a, b, t, M, R:longint; 
    function F(x: longint):longint; 
    begin
     F:=abs(abs(x-6)+abs(x+6)-16)+2;
    end;  
    
    begin
      a := -20;
      b := 20;  
      M := a;
      R := F(a);  
      for t := a to b do begin
         if (F(t) <= R) then begin
           M := t;
           R := F(t)
         end
      end; 
      write(M + R);
     end.
    #include <iostream>
    using namespace std;
      
    long F(long x) {
     return abs(abs(x-6)+abs(x+6)-16)+2;
    }  
    
    int main() {
         long a = -20, b = 20;
         long M = a, R = F(a);
         for (int t = a; t <= b; ++t) {
             if (F(t) <= R) {
                 M = t; R = F(t);
             }
         }
         cout << M + R; 
        return 0;
     }