Егэ по информатике алгоритмизация

На уроке рассмотрено решение 25 задания ЕГЭ по информатике: дается подробное объяснение и разбор заданий демонстрационных вариантов и досрочных экзаменов

Содержание:

  • Объяснение задания 25 ЕГЭ по информатике
    • Алгоритмизация и программирование
  • Решение 25 заданий ЕГЭ по информатике
    • Делители числа
    • Простые числа
  • Задания прошлых лет для тренировки (до 2021)
    • Задачи с поэлементной обработкой массива
    • Задачи на обработку элементов массива с последующей заменой
    • Задачи на обработку пар элементов массива (два подряд идущих)
    • Задачи на обработку трёх подряд идущих элементов массива (тройки элементов массива)
    • Задачи на поиск максимума, минимума элементов массива и другие
  • Решение 25 заданий ЕГЭ по информатике: более сложные задания

25-е задание: «Программная обработка целочисленной информации»

Уровень сложности

— высокий,

Требуется использование специализированного программного обеспечения

— да,

Максимальный балл

— 2,

Примерное время выполнения

— 20 минут.

  
Проверяемые элементы содержания: Умение создавать собственные программы (10–20 строк) для обработки целочисленной информации

Рекомендации по выполнению:

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

Типичные ошибки и рекомендации по их предотвращению:

  • «в цикле происходит выход за границу массива;
  • не инициализируется или неверно инициализируется искомое значение;
  • исходный массив не изменяется;
  • изменяются не все требуемые элементы (например, только первый или последний из них);
  • отсутствует вывод ответа, или ответ выводится не полностью (например, только один элемент массива ввиду пропущенного цикла вывода элементов или операторных скобок);
  • используется переменная, не объявленная в разделе описания переменных;
  • не указано или неверно указано условие завершения цикла»
  • «Часто бывает, что увлекшись написанием решения, экзаменуемый совершает ошибки в простых ситуациях: организация ввода-вывода, описание и инициализация переменных, обработка массива (выход за границу) и т.д. Эти ошибки могут стоить Вам нескольких баллов, старайтесь их не допускать»

    ФГБНУ «Федеральный институт педагогических измерений»

    Алгоритмизация и программирование

    Для решения задания требуется вспомнить темы:

    • Одномерные массивы.
    • Двумерные массивы.

    Решение 25 заданий ЕГЭ по информатике

    Плейлист видеоразборов задания на YouTube:
    Задание демонстрационного варианта 2022 года ФИПИ


    Делители числа

    25_7:

    Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [126849; 126871], числа, имеющие ровно 4 различных делителя.
    Выведите эти четыре делителя для каждого найденного числа в порядке возрастания.

    ✍ Решение:

      ✎ Решение (неоптимизированный вариант, метод полного перебора):

      PascalABC.net:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      
      begin
        var divCount := 4;
        for var n := 126849 to 126871 do
        begin
          var divs := new List<integer>; 
          for var d := 1 to n do
            if n mod d = 0 then begin
              divs.Add(d);      
              if divs.Count > divCount then break;
            end;
          if divs.Count = divCount then
          begin
            divs.Sort();
            Println(divs);
          end;
        end;
      end.
      Python:

      1
      2
      3
      4
      5
      6
      7
      8
      
      for n in range(126849,126871+1):
            divs = [] # чистим список делителей
            for d in range(1,n+1): #
              if n % d == 0:
                divs = divs + [d] # добавляем делитель в список
                if len(divs) > 4: break
            if len(divs) == 4:
              print(*divs)
      С++:

      ✎ Решение (оптимизированный вариант):

    • Будем использовать оптимизированный вариант программы, подходящий для «медленных» компьютеров. Для этого перебор делителей для числа n будем выполнять от 2 до √n, округлив его до ближайшего целого числа (не включая точный квадратный корень, если он существует):
    • вместо диапазона делителей [1; число]
      использовать диапазон [1; округл(√n)]
      
    • При переборе делителей будем определять: если делитель – это точный квадратный корень(n), то в список делителей добавлять будем только сам делитель, если нет – то добавляем пару делителей (делитель и n // делитель):
    • Пример:
      число 8 = 2 * 4
      Достаточно рассмотреть цикл от 2 до округл(√8) (=2)
      если 8 делится на 2 и 8/2 не равно 2, то делители: 2 и 4 (8/2)
      
      PascalABC.net:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      
      begin
        var divCount := 4;
        for var n := 126849 to 126871 do
        begin
          var divs := new List<integer>;
          var d := 1;
          while d * d <= n do  // можно цикл for var d := 1 to round(sqrt(n)) do
          begin
            if n mod d = 0 then begin
              divs.Add(d);      
              if d * d <> n then 
                divs.Add(n div d);
              if divs.Count > divCount then break;
            end;
            d := d+1;
          end;
          if divs.Count = divCount then
          begin
            divs.Sort();
            Println(divs);
          end;
        end;
      end.
      Python:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      
      # import math # для квадратного корня числа (sqrt)
      divCount = 4  # нужное количество делителей
      for n in range(126849,126871 + 1):
        divs = [] # чистим список делителей
        d = 1
        #  вместо while можно цикл for d in range(1,round(math.sqrt(n))):
        while d*d <= n: # перебор делителей
          if n % d == 0:
            divs.append(d) # добавляем делитель в список
            if d != n//d: # если делитель - не точный квадратный корень n
              divs.append(n//d)
            if len(divs) > divCount: break
          d+=1
        if len(divs) == divCount:
          divs.sort()
          print(divs)
      С++:

      ✎ Решение: Генерация списка делителей.
      Общая идея:

    • Для каждого числа указанного диапазона генерируем список делителей.
    • Если длина списка равна четырем, выводим его.
    • PascalABC.net:

      Python:

      for n in range(126849, 126871+1):
        divs = [d for d in range(1, n+1) if n % d == 0] 
        if len(divs) == 4:
          print( *divs )
      С++:

    Ответ:

    1 3 42283 126849
    1 47 2699 126853
    1 5 25373 126865
    1 293 433 126869
    

    25_8:

    Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [164700; 164752], числа, имеющие ровно 6 различных делителей.
    Выведите эти делители для каждого найденного числа в порядке возрастания.

    ✍ Решение:

      ✎ Решение (оптимизированный вариант):

      PascalABC.net:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      
      begin
        var divCount := 6;
        for var n := 164700 to 164752 do
        begin
          var divs := new List<integer>; 
          for var d := 1 to round(sqrt(n)) do
            if n mod d = 0 then begin
              divs.Add(d);      
              if d * d <> n then 
                divs.Add(n div d);
              if divs.Count > divCount then break;
            end;
          if divs.Count = divCount then
          begin
            divs.Sort();
            Println(divs);
          end;
        end;
      end.
      Python:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      
      import math # для квадратного корня sqrt
      divCount = 6  # нужное количество делителей
      for n in range(164700, 164752 + 1):
        divs = [] # чистим список делителей
        for d in range(1,round(math.sqrt(n))): # перебор делителей
          if n % d == 0:
            divs.append(d) # добавляем делитель в список
            if d != n//d:
              divs.append(n//d)
            if len(divs) > divCount: break
        if len(divs) == divCount:
          divs.sort()
          print(divs)
      С++:

      ✎ Решение: Генерация списка делителей.
      Общая идея:

    • Для каждого числа указанного диапазона генерируем список делителей.
    • Если длина списка равна четырем, выводим его.
    • PascalABC.net:

      Python:

      for n in range(164700, 164752+1):
          divs = [d for d in range(1, n+1) if n % d == 0] 
          if len(divs) == 6:
              print( *divs )
      С++:

    Ответ:

    1 2 4 41177 82354 164708
    1 3 9 18301 54903 164709
    1 2 4 41179 82358 164716
    1 2 4 41183 82366 164732
    

    25_9:

    Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [190201; 190230], числа, имеющие ровно 4 различных делителя.
    Выведите эти четыре делителя для каждого найденного числа в порядке убывания.

    ✍ Решение:

      ✎ Решение (неоптимизированный вариант, метод полного перебора):

      PascalABC.net:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      
      begin
        var divs := new integer[4];
        for var n := 190201 to 190230 do
        begin
          var i := 0; // для индекса массива
          for var d := 1 to n do
          begin
            if n mod d = 0 then 
            begin
              if i < 4 then
                divs[i] := d;
              inc(i);
            end;
            if i > 4 then 
              break; 
          end;
          if i = 4 then begin
            println(divs.Reverse())
          end;
        end;
      end.
      Python:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      
      for n in range(190201,190230+1):
            divs = [] # чистим список делителей
            for d in range(1,n+1): #
              if n % d == 0:
                divs = divs + [d] # добавляем делитель в список
                if len(divs) > 4: break
            if len(divs) == 4:
              divs.reverse()
              print(*divs)
      С++:

      ✎ Решение (оптимизированный вариант):

      PascalABC.net:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      
      begin
        var divCount := 4;
        for var n := 190201 to 190230 do
        begin
          var divs := new List<integer>; 
          for var d := 1 to round(sqrt(n)) do
            if n mod d = 0 then begin
              divs.Add(d);      
              if d * d <> n then 
                divs.Add(n div d);
              if divs.Count > divCount then break;
            end;
          if divs.Count = divCount then
          begin
            divs.Sort();
            divs.Reverse();
            Println(divs);
          end;
        end;
      end.
      Python:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      
      import math # для квадратного корня sqrt
      divCount = 4  # нужное количество делителей
      for n in range(190201, 190230 + 1):
        divs = [] # чистим список делителей
        for d in range(1,round(math.sqrt(n))): # перебор делителей
          if n % d == 0:
            divs.append(d) # добавляем делитель в список
            if d != n//d:
              divs.append(n//d)
            if len(divs) > divCount: break
        if len(divs) == divCount:
          divs.sort()
          divs.reverse()
          print(divs)
      С++:

      ✎ Решение: Генерация списка делителей.
      Общая идея:

    • Для каждого числа указанного диапазона генерируем список делителей.
    • Если длина списка равна четырем, выводим его.
    • PascalABC.net:

      Python:

      for n in range(190201, 190230+1):
          divs = [d for d in range(1, n+1) if n % d == 0] 
          if len(divs) == 4:
              divs.reverse() # реверсируем (по убыванию)
              print( *divs )
      С++:

    Ответ:

    190201 17291 11 1
    190202 95101 2 1
    190214 95107 2 1
    190219 853 223 1
    190222 95111 2 1
    190223 17293 11 1
    190227 63409 3 1
    190229 14633 13 1
    

    Видеоразбор задания:

    📹 YouTube здесь
    📹 Видеорешение на RuTube здесь


    25_10:

    Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [190201; 190280], числа, имеющие ровно 4 различных ЧЁТНЫХ делителя.
    Выведите эти четыре делителя для каждого найденного числа в порядке убывания.

    ✍ Решение:

      ✎ Решение (неоптимизированный вариант, метод полного перебора):

      PascalABC.net:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      
      begin
        var divs := new integer[4];
        for var n := 190201 to 190280 do
        begin
          var i := 0; // для индекса массива
          for var d := 1 to n do
          begin
            if (n mod d = 0) and (d mod 2 = 0) then 
            begin
              if i < 4 then
                divs[i] := d;
              inc(i);
            end;
            if i > 4 then 
              break; 
          end;
          if i = 4 then begin
            println(divs.Reverse())
          end;
        end;
      end.
      Python:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      
      for n in range(190201,190280+1):
            divs = [] # чистим список делителей
            for d in range(1,n+1): #
              if n % d == 0 and d%2==0:
                divs = divs + [d] # добавляем делитель в список
                if len(divs) > 4: break
            if len(divs) == 4:
              divs.reverse()
              print(*divs)
      С++:

      ✎ Решение: Генерация списка делителей.

      Общая идея:

    • Для каждого числа указанного диапазона генерируем список делителей.
    • Если длина списка равна четырем, выводим его.
    • PascalABC.net:

      Python:

      for n in range(190201, 190280+1):
          divs = [d for d in range(1, n+1) if n % d == 0 and d % 2 == 0] 
          if len(divs) == 4:
              divs.reverse()
              print( *divs )
      С++:

    Ответ:

    190226 838 454 2
    190234 17294 22 2
    190238 2606 146 2
    190252 95126 4 2
    190258 758 502 2
    190274 27182 14 2
    190276 95138 4 2
    

    25_11:

    Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [394441; 394505], числа, имеющие максимальное количество различных делителей. Если таких чисел несколько, то найдите минимальное из них.
    Выведите количество делителей найденного числа и два наибольших делителя в порядке убывания.

    ✍ Решение:

      ✎ Решение (неоптимизированный вариант, метод полного перебора):

      PascalABC.net:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      
      begin
        var max := 0;
        var divsMax := new List<integer>; 
        for var n := 394441 to 394505 do
        begin
          var divs := new List<integer>; 
          for var d := 1 to n do
            if n mod d = 0 then 
              divs.Add(d);      
          if divs.Count > max then 
          begin
            max := divs.Count;
            divsMax := divs;
          end;
        end;
        divsMax.Reverse();
        print(max, divsMax[0], divsMax[1])
      end.
      Python:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      
      maxim = 0  # нужное количество делителей
      divsMax = []
      for n in range(394441, 394505 + 1):
        divs = [] # чистим список делителей
        for d in range(1,n+1): # перебор делителей
          if n % d == 0:
            divs.append(d) # добавляем делитель в список
        if len(divs) > maxim: 
          maxim = len(divs)
          divsMax = divs
      divsMax.reverse()
      print(maxim,divsMax[0],divsMax[1])
      С++:

      ✎ Решение (Генерация списка делителей):

      PascalABC.net:

      Python:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      
      maxim=0
      divsmax=[]
      for n in range(394441, 394505+1):
          divs = [d for d in range(1, n+1) if n % d == 0] 
          if len(divs) > maxim:
              maxim = len(divs)
              divsmax = divs # сохраняем делители для числа с макс кол-вом дел-ей
      divsmax.reverse()
      print(maxim, divsmax[0], divsmax[1])
      С++:

    Ответ: 48 394450 197225

    Видео

    Простые числа

    25_12:

    Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [3532000; 3532160], простые числа.
    Выведите все найденные простые числа в порядке убывания, слева от каждого числа выведите его номер по порядку.

    ✍ Решение:

      ✎ Решение (неоптимизированный вариант, метод полного перебора):

      PascalABC.net:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      
      begin
        var count := 0;
        for var n := 3532160 downto 3532000 do // цикл с конца 
        begin
          var flag := true; 
          for var d := 2 to n - 1 do // перебор делителей, начиная с двух до n-1
          begin
            if n mod d = 0 then begin // есть делитель помимо единицы и самого n
              flag := false; // число не простое     
              break;
            end;
          end;
          if flag = true then // если число простое
          begin
            inc(count);
            Println(count, n);
          end;
        end;
      end.
      Python:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      
      count = 0
      for n in range(3532160, 3532000-1, -1): # цикл с конца и с шагом (-1) 
        flag = True
        for d in range(2, n): # перебор делителей, начиная с двух
          if n % d == 0: # есть делитель помимо единицы и самого n
            flag = False # число не простое
            break
        if flag == True: # число простое
          count+=1
          print(count , n)
      С++:

      ✎ Решение (оптимизированный вариант):

      PascalABC.net:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      
      begin
        var count := 0;
        for var n := 3532160 downto 3532000 do // цикл с конца 
        begin
          var flag := true; 
          var d := 2;
          while d * d <= n - 1 do // перебор делителей, начиная с двух
          begin
            if n mod d = 0 then begin // есть делитель помимо единицы и самого n
              flag := false;  // число не простое    
              break;
            end;
            d := d + 1;
          end;
          if flag = true then // если число простое
          begin
            inc(count);
            Println(count, n);
          end;
        end;
      end.
      Python:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      
      count = 0
      for n in range(3532160, 3532000-1, -1): # цикл с конца и с шагом (-1) 
            flag = True
            d = 2
            while d*d <= n-1: # перебор делителей, начиная с двух
                  if n % d == 0: # есть делитель помимо единицы и самого n
                        flag = False # число не простое
                        break
                  d+=1
            if flag == True: # число простое
                  count+=1
                  print(count , n)
      С++:

    Ответ:

    1  3532147
    2  3532121
    3  3532103
    4  3532091
    5  3532049
    6  3532033
    7  3532021
    8  3532019
    9  3532007
    

    Задания прошлых лет для тренировки (до 2021)

    Задачи с поэлементной обработкой массива

    25_1: ЕГЭ по информатике 2017 года (один из вариантов со слов выпускника):

    Дан целочисленный массив из 20 элементов. Элементы массива могут принимать целые значения от 0 до 10 000 включительно. Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести количество элементов массива НЕ кратных 3.

    Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но использовать все описанные переменные не обязательно.

    1
    2
    3
    4
    5
    6
    7
    8
    
    const N = 20;
    var i,j,k:integer;
    a:array [1..N] of integer; 
    begin
    for i:=1 to N do 
      readln(a[i]);end.

    ✍ Решение:

    Рассмотрим заданный фрагмент решения:

    • в цикле со счетчиком i запрашиваются значения элементов массива, т.е. формируется массив;
    • из постановки задания видим, что необходимо найти количество чего-то, это значит, что нужно использовать переменную счетчик;
    • объявлены три целочисленных переменных: i, j, k; переменная i использована в первом цикле, значит для счетчика можно взять переменную k;
    • счетчик всегда нужно обнулять, поэтому следующим оператором будет:
    • определим, количество чего нам необходимо считать: количество элементов массива не кратных 3. Кратность можно определить через остаток от деления: если значение элемента массива при делении на 3 в остатке не возвращает 0, значит элемент не кратен трем;
    • остаток при делении в паскале — оператор mod. Поскольку необходимо просмотреть каждый элемент массива, то это нужно делать в цикле for;
    • переменная i уже использована в первом цикле for, значит, для очередного цикла возьмем неиспользованную переменную j:
    • for j:=1 to N do
        if a[j] mod 3 <> 0 then
    • если условие истинно (т.е. нашелся элемент массива, не кратный трем), то увеличиваем счетчик:
    • после цикла остается вывести значение счетчика, т.е. вывести количество элементов массива не кратных 3:

    Результат:

    k:=0;
    for j:=1 to N do
      if a[j] mod 3 <> 0 then
        inc(k);
    writeln(k);

    Смотрите видео с подробным объяснением и разбором данного 25 задания:

    📹 YouTube здесь
    📹 Видеорешение на RuTube здесь


    Задачи на обработку элементов массива с последующей заменой

    25_3: Решение 25 задания ЕГЭ по информатике Демоверсия 2018:

    Дан целочисленный массив из 30 элементов. Элементы массива могут принимать целые значения от 0 до 10000 включительно. Опишите на одном из языков программирования алгоритм, который находит количество элементов массива, больших 100 и при этом кратных 5, а затем заменяет каждый такой элемент на число, равное найденному количеству. Гарантируется, что хотя бы один такой элемент в массиве есть. В качестве результата необходимо вывести измененный массив, каждый элемент массива выводится с новой строчки.

    Например, для массива из шести элементов: 4 115 7 195 25 106
    программа должна вывести числа 4 2 7 2 25 106

    Исходные данные объявлены так, как показано ниже на примерах для некоторых языков программирования. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных.

    Паскаль:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    const
    N = 30;
    var
    a: array [1..N] of longint;
    i, j, k: longint;
    begin
    	for i := 1 to N do
    		readln(a[i]);
    	...
    end.

    В качестве ответа Вам необходимо привести фрагмент программы, который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например Free Pascal 2.6). В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в условии.

    Похожие задания для тренировки

    ✍ Решение:

      Решение на языке Паскаль:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      
      k := 0;
      for i := 1 to N do
      	if (a[i] > 100) and (a[i] mod 5 = 0) then
      		k:=k+1;
      for i := 1 to N do begin
      	if (a[i] > 100) and (a[i] mod 5 = 0) then
      		a[i] := k;
      writeln(a[i])
      end

    25_6:

    Дан массив, содержащий неотрицательные целые числа. Необходимо вывести:

  • максимальный чётный элемент, если количество чётных элементов не меньше, чем нечётных;
  • максимальный нечётный элемент, если количество нечётных эле-ментов больше, чем чётных.
  • Например, для массива из шести элементов: 4 6 12 17 3 8
    ответом будет 12 — наибольшее чётное число, поскольку чётных чисел в этом массиве больше

    Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных.

    Python:

    1
    2
    3
    4
    5
    6
    
    # допускается также использовать
    # целочисленные переменные j, k, m
    a = []
    n = 2000 // менять значение n нельзя
    for i in range(0, n):
      a.append(int(input()))

    ✍ Решение:

      Решение на языке Python:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      
      a = []
      n = 2000 // менять значение n нельзя
      for i in range(0, n):
          a.append(int(input()))
      j = 0 
      k = 0 
      m = 0 
      for i in range(0, n):
      	if a[i]%2 == 0:
      		j+=1
      	else:
      		k+=1
      if k>j:
      	j = 0
      	for i in range(0, n):
      		if a[i]>j and a[i] % 2 != 0:
      			j = a[i]
      	print(j)
      else:
      	for i in range(0, n):
      		if a[i]>m and a[i] % 2 == 0:
      			m = a[i]
      	print(m)

    Задачи на обработку пар элементов массива (два подряд идущих)

    25_4:

    Дан целочисленный массив из 40 элементов. Элементы массива могут принимать целые значения от 0 до 10 000 включительно. Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести количество пар элементов массива, в которых одно из чисел двузначное. В данной задаче под парой подразумевается два подряд идущих элемента массива.

    Например, для массива из семи элементов: 13; 323; 12; 33; 117 — ответ: 4.

    Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    const
      N = 40;
    var
      a: array [1..N] of integer;
      i, j, k: integer;
    begin
      for i := 1 to N do 
        readln(a[i]);
      ...
    end.

    ✍ Решение:
     

      1
      2
      3
      4
      5
      
      k := 0;
      for i := 1 to N - 1 do
       if ((a[i] < 100) and (a[i] > 9)) or ((a[i + l] < 100) and (a[i + 1] > 9)) then 
            inc(k);
      writeln(k);

    25_5:

    Дан целочисленный массив из 20 элементов. Элементы массива могут принимать целые значения от -10 000 до 10 000 включительно. Опишите алгоритм, позволяющий найти и вывести количество пар элементов массива, в которых сумма элементов делится на 2, но не делится на 4. В данной задаче под парой подразумевается два подряд идущих элемента массива.

    Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных.

    Python:

    1
    2
    3
    4
    5
    6
    7
    
    #  допускается также использовать
    #  две целочисленные переменные
    #  j и k
    a = []
    n = 20
    for i in range(0, n):
      a.append(int(input()))

    ✍ Решение:

      Проанализируем данный фрагмент кода на языке Python:

    • В первой строчке кода объявляется список а. Дальше, идет объявление переменной n = 20, она отвечает за размер массива.
    • При решении такого рода задач, необходимо помнить, что массив в Python — это список и это динамический тип данных. Кроме того, нумерация элементов массива начинается с 0.

    • Ниже мы видим инициализацию списка а. Мы должны дописать код дальнейшей программы, который последует после заполнения списка пользователем.
    • Итак, по условию мы должны находить пары элементов, сумма которых делится на 2, но не делится на 4, причем парами считаются соседние элементы, например: a[0] и a[1], a[1] и a[2].
    • Мы можем узнать, делится ли данный элемент на число, если остаток от деления на него равен 0, и не делится — в противном случае. Тогда сумма соседних элементов при делении на 2 должна давать остаток 0, а при делении на 4 наоборот — отличный от 0.
    • Введем цикл, который будет перебирать все элементы массива, считать сумму соседей и проверять истинность условия.
    • for i in range(0, n-1):
          j = a[i] + a[i+1]
          if j%2 == 0 and j%4 != 0:

      Так как мы рассматриваем элемент a[i + 1], значит, цикл должен работать до n — 1, чтобы не выйти за границы диапазона массива.

    • Когда мы определились с условием, за счетчик возьмем переменную k, которую допустимо брать исходя из комментариев к программе.
    • ...
       if j%2 == 0 and j%4 != 0:
              k+=1
    • Мы добавили допустимую переменную j, чтобы условный оператор выглядел компактнее.
    • Однако задача еще не решена. Во-первых, мы должны до цикла инициализировать счетчик k = 0. Так как иначе Python выдаст ошибку.
    • Дело в том, что мы пытаемся присвоить переменной k его же значение, но на 1 больше, но интерпретатор «не встречал» раньше переменной k, из-за чего возникает ошибка.

    • Кроме того, добавим вывод результата после цикла.
    • Таким образом, правильный вариант с учетом доработок:
    • a = []
      n = 20
      for i in range(0, n):
        a.append(int(input()))
      k = 0
      for i in range(0, n - 1):
          j = a[i] + a[i + 1]
          if j%2 == 0 and j%4 != 0:
              k += 1
      print(k)

    Задачи на обработку трёх подряд идущих элементов массива (тройки элементов массива)

    25_2:

    Дан целочисленный массив из 40 элементов. Элементы массива могут принимать целые значения от 0 до 10 000 включительно. Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести количество троек элементов массива, состоящих из равных между собой чисел. В данной задаче под тройкой подразумевается три подряд идущих элемента массива.

    Например, для массива из семи элементов: 2; 2; 2; 4; 4; 4; 4 — ответ: 3.

    Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    const
      N=40;
    var
      a: array[1..N] of integer;
      i, j, k:integer;
    begin
      for i:=1 to N do
        readln(a[i]);
      ...
    end.

    ✍ Решение:

    • из постановки задания видим, что необходимо искать количество чего-то, это значит, что нужно использовать переменную счетчик; возьмем для нее объявленную переменную k;
    • счетчик всегда нужно сначала обнулять, поэтому следующим оператором будет:
    • определим, количество чего нам необходимо считать: количество троек элементов массива, состоящих из равных между собой чисел. Т.е. необходимо сравнивать между собой каждые три подряд идущих элемента массива, например так:
    • if (a[i]=a[i+1]) and (a[i]=a[i+2]) then
          inc(k);
    • inc(k) — оператор, увеличивающий счетчик k на единицу;
    • условие необходимо выполнять в цикле, так как нужно проверить все элементы массива; цикл со счетчиком необходимо организовать от 1 до N-2, в противном случае индексы элементов a[i+2] выйдут за границы диапазона массива (например, при i = 40, получим … a[40+2], а 42-го элемента массива не существует, поэтому цикл надо делать до i = 38, т.е. N-2).

    Результат:

    for i:=1 to N-2 do
        if (a[i]=a[i+1]) and (a[i]=a[i+2]) then
          inc(k);
    writeln(k);

    Более подробное объяснение предлагаем посмотреть на видео:

    📹 YouTube здесь
    📹 Видеорешение на RuTube здесь


    Задачи на поиск максимума, минимума элементов массива и другие

    Всего: 1000    1–20 | 21–40 | 41–60 | 61–80 | 81–100 | 101–120 | 121–140 …

    Добавить в вариант

    Ниже на пяти языках программирования записан алгоритм, который вводит натуральное число x, выполняет преобразования, а затем выводит одно число. Укажите наименьшее возможное значение x, при вводе которого алгоритм выведет число 12.

    Бейсик Python

    DIM X, A, B, D AS INTEGER

    INPUT X

    A = 0: B = 10

    WHILE X > 0

        D = X MOD 6

        IF D > A THEN A = D

        IF D < B THEN B = D

        X = X 6

    WEND

    PRINT A*B

    x = int(input())

    a=0; b=10

    while x > 0:

        d = x % 6

        if d > a: a = d

        if d < b: b = d

        x = x // 6

    print(a*b)

    Паскаль Алгоритмический язык

    var x, a, b, d: longint;

    begin

        readln(x);

        a := 0; b := 10;

        while x > 0 do begin

            d := x mod 6;

            if d > a then a := d;

            if d < b then b := d;

            x := x div 6

        end;

        writeln(a*b);

    end.

    алг

    нач

        цел x, a, b, d

        ввод x

        a := 0; b := 10

        нц пока x > 0

            d := mod(x,6)

            если d > a то a := d все

            если d < b то b := d все

            x := div(x,6)

        кц

        вывод a*b

    кон

    С++

    #include <iostream>

    using namespace std;

    int main()

    {

        int x, a, b, d;

        cin >> x;

        a = 0; b = 10;

        while (x > 0) {

            d = x % 6;

            if (d > a) a = d;

            if (d < b) b = d;

            x = x / 6;

        }

        cout << a*b << endl;

        return 0;

    }


    Автомат обрабатывает натуральное число N по следующему алгоритму:

    1.  Строится двоичная запись числа N.

    2.  Запись «переворачивается», то есть читается справа налево. Если при этом появляются ведущие нули, они отбрасываются.

    3.  Полученное число переводится в десятичную запись и выводится на экран.

    Пример. Дано число N = 58. Алгоритм работает следующим образом.

    1.  Двоичная запись числа N: 111010.

    2.  Запись справа налево: 10111 (ведущий ноль отброшен).

    3.  На экран выводится десятичное значение полученного числа 23.

    Какое наибольшее число, не превышающее 100, после обработки автоматом даёт результат 11?


    Ниже на пяти языках программирования записан алгоритм, который вводит натуральное число x, выполняет преобразования, а затем выводит одно число. Укажите наименьшее возможное значение x, при вводе которого алгоритм выведет число 13.

    Бейсик Python

    DIM X, A, B, D AS INTEGER

    INPUT X

    A = 0: B = 10

    WHILE X > 0

        D = X MOD 9

        IF D > A THEN A = D

        IF D < B THEN B = D

        X = X 9

    WEND

    PRINT A+B

    x = int(input())

    a=0; b=10

    while x > 0:

        d = x % 9

        if d > a: a = d

        if d < b: b = d

        x = x // 9

    print(a+b)

    Паскаль Алгоритмический язык

    var x, a, b, d: longint;

    begin

        readln(x);

        a := 0; b := 10;

        while x > 0 do begin

            d := x mod 9;

            if d > a then a := d;

            if d < b then b := d;

            x := x div 9

        end;

        writeln(a+b);

    end.

    алг

    нач

        цел x, a, b, d

        ввод x

        a := 0; b := 10

        нц пока x > 0

            d := mod(x,9)

            если d > a то a := d все

            если d < b то b := d все

            x := div(x,9)

        кц

        вывод a+b

    кон

    С++

    #include <iostream>

    using namespace std;

    int main()

    {

        int x, a, b, d;

        cin >> x;

        a = 0; b = 10;

        while (x > 0) {

            d = x % 9;

            if (d > a) a = d;

            if (d < b) b = d;

            x = x / 9;

        }

        cout << a+b << endl;

        return 0;

    }


    Имеется набор данных, состоящий из пар положительных целых чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы сумма всех выбранных чисел не делилась на 3 и при этом была максимально возможной. Гарантируется, что искомую сумму получить можно. Программа должна напечатать одно число  — максимально возможную сумму, соответствующую условиям задачи.

    Входные данные.

    Файл A

    Файл B

    Даны два входных файла (файл A и файл B), каждый из которых содержит в первой строке количество пар N (1 ≤ N ≤ 100000). Каждая из следующих N строк содержит два натуральных числа, не превышающих 10 000.

    Пример организации исходных данных во входном файле:

    6

    1 3

    5 12

    6 9

    5 4

    3 3

    1 1

    Для указанных входных данных значением искомой суммы должно быть число 32.

    В ответе укажите два числа: сначала значение искомой суммы для файла А, затем для файла B.

    Предупреждение: для обработки файла B не следует использовать переборный алгоритм, вычисляющий сумму для всех возможных вариантов, поскольку написанная по такому алгоритму программа будет выполняться слишком долго.

    Ответ:

    Источник: Демонстрационная версия ЕГЭ−2021 по информатике


    Имеется набор данных, состоящий из пар положительных целых чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы сумма всех выбранных чисел не делилась на 3 и при этом была минимально возможной. Гарантируется, что искомую сумму получить можно. Программа должна напечатать одно число  — минимально возможную сумму, соответствующую условиям задачи.

    Входные данные.

    Файл A

    Файл B

    Даны два входных файла (файл A и файл B), каждый из которых содержит в первой строке количество пар N (1 ≤ N ≤ 100000). Каждая из следующих N строк содержит два натуральных числа, не превышающих 10 000.

    Пример организации исходных данных во входном файле:

    6

    1 3

    5 12

    6 9

    5 4

    3 3

    1 1

    Для указанных входных данных значением искомой суммы должно быть число 20.

    В ответе укажите два числа: сначала значение искомой суммы для файла А, затем для файла B.

    Предупреждение: для обработки файла B не следует использовать переборный алгоритм, вычисляющий сумму для всех возможных вариантов, поскольку написанная по такому алгоритму программа будет выполняться слишком долго.

    Ответ:


    Имеется набор данных, состоящий из пар положительных целых чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы сумма всех выбранных чисел не делилась на 5 и при этом была максимально возможной. Гарантируется, что искомую сумму получить можно. Программа должна напечатать одно число  — максимально возможную сумму, соответствующую условиям задачи.

    Входные данные.

    Файл A

    Файл B

    Даны два входных файла (файл A и файл B), каждый из которых содержит в первой строке количество пар N (1 ≤ N ≤ 100000). Каждая из следующих N строк содержит два натуральных числа, не превышающих 10 000.

    Пример организации исходных данных во входном файле:

    6

    1 3

    5 12

    6 9

    5 4

    3 3

    1 1

    Для указанных входных данных значением искомой суммы должно быть число 33.

    В ответе укажите два числа: сначала значение искомой суммы для файла А, затем для файла B.

    Предупреждение: для обработки файла B не следует использовать переборный алгоритм, вычисляющий сумму для всех возможных вариантов, поскольку написанная по такому алгоритму программа будет выполняться слишком долго.

    Ответ:


    Набор данных состоит из пар натуральных чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы сумма всех выбранных чисел делилась на 3 и при этом была максимально возможной.

    Входные данные.

    Файл A

    Файл B

    Первая строка входного файла содержит число N  — общее количество пар в наборе. Каждая из следующих N строк содержит два натуральных числа, не превышающих 10 000.

    Пример организации исходных данных во входном файле:

    6

    1 3

    5 10

    6 9

    5 4

    3 3

    1 1

    Для указанных данных искомая сумма равна 30.

    В ответе укажите два числа: сначала значение искомой суммы для файла А, затем для файла B.

    Предупреждение: для обработки файла B не следует использовать переборный алгоритм, вычисляющий сумму для всех возможных вариантов, поскольку написанная по такому алгоритму программа будет выполняться слишком долго.

    Ответ:


    Набор данных состоит из пар натуральных чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы сумма всех выбранных чисел делилась на 3 и при этом была минимально возможной.

    Входные данные.

    Файл A

    Файл B

    Первая строка входного файла содержит число N  — общее количество пар в наборе. Каждая из следующих N строк содержит два натуральных числа, не превышающих 10 000.

    Пример организации исходных данных во входном файле:

    6

    1 3

    5 12

    6 9

    5 4

    3 3

    1 1

    Для указанных данных искомая сумма равна 21.

    В ответе укажите два числа: сначала значение искомой суммы для файла А, затем для файла B.

    Предупреждение: для обработки файла B не следует использовать переборный алгоритм, вычисляющий сумму для всех возможных вариантов, поскольку написанная по такому алгоритму программа будет выполняться слишком долго.

    Ответ:


    Набор данных состоит из троек натуральных чисел. Необходимо распределить все числа на три группы, при этом в каждую группу должно попасть ровно одно число из каждой исходной тройки. Сумма всех чисел в первой группе должна быть чётной, во второй  — нечётной. Определите максимально возможную сумму всех чисел в третьей группе.

    Входные данные.

    Файл A

    Файл B

    Первая строка входного файла содержит число N  — общее количество троек в наборе. Каждая из следующих N строк содержит три натуральных числа, не превышающих 10 000.

    Пример входного файла:

    3

    1 2 3

    5 12 4

    6 9 7

    Для указанных данных искомая сумма равна 24, она соответствует такому распределению чисел по группам: (1, 5, 6), (2, 4, 7), (3, 12, 9).

    Вам даны два входных файла (A и B), каждый из которых имеет описанную выше структуру. В ответе укажите два числа: сначала значение искомой суммы для файла A, затем для файла B.

    Предупреждение: для обработки файла B не следует использовать переборный алгоритм, вычисляющий сумму для всех возможных вариантов, поскольку написанная по такому алгоритму программа будет выполняться слишком долго.

    Ответ:


    Набор данных состоит из троек натуральных чисел. Необходимо распределить все числа на три группы, при этом в каждую группу должно попасть ровно одно число из каждой исходной тройки. Сумма всех чисел в первой группе должна быть чётной, во второй  — нечётной. Определите минимально возможную сумму всех чисел в третьей группе.

    Входные данные.

    Файл A

    Файл B

    Первая строка входного файла содержит число N  — общее количество троек в наборе. Каждая из следующих N строк содержит три натуральных числа, не превышающих 10 000.

    Пример входного файла:

    3

    1 2 3

    8 12 4

    6 9 7

    Для указанных данных искомая сумма равна 11, она соответствует такому распределению чисел по группам: (2, 8, 7), (3, 12, 9), (1, 4, 6).

    Вам даны два входных файла (A и B), каждый из которых имеет описанную выше структуру. В ответе укажите два числа: сначала значение искомой суммы для файла A, затем для файла B.

    Предупреждение: для обработки файла B не следует использовать переборный алгоритм, вычисляющий сумму для всех возможных вариантов, поскольку написанная по такому алгоритму программа будет выполняться слишком долго.

    Ответ:


    Набор данных состоит из нечётного количества пар натуральных чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы чётность суммы выбранных чисел совпадала с чётностью большинства выбранных чисел и при этом сумма выбранных чисел была как можно больше. Определите максимальную сумму, которую можно получить при таком выборе. Гарантируется, что удовлетворяющий условиям выбор возможен.

    Входные данные.

    Файл A

    Файл B

    Первая строка входного файла содержит число N  — общее количество пар в наборе. Каждая из следующих N строк содержит два натуральных числа, не превышающих 10 000.

    Пример входного файла:

    5

    15 8

    5 11

    6 3

    7 2

    9 14

    Для указанных данных надо выбрать числа 15, 11, 6, 7 и 14. Большинство из них нечётны, сумма выбранных чисел равна 53 и тоже нечётна. В ответе надо записать число 53.

    Вам даны два входных файла (A и B), каждый из которых имеет описанную выше структуру. В ответе укажите два числа: сначала значение искомой суммы для файла A, затем для файла B.

    Предупреждение: для обработки файла B не следует использовать переборный алгоритм, вычисляющий сумму для всех возможных вариантов, поскольку написанная по такому алгоритму программа будет выполняться слишком долго.

    Ответ:


    Набор данных состоит из нечётного количества пар натуральных чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы чётность суммы выбранных чисел совпадала с чётностью большинства выбранных чисел и при этом сумма выбранных чисел была как можно меньше. Определите минимальную сумму, которую можно получить при таком выборе. Гарантируется, что удовлетворяющий условиям выбор возможен.

    Входные данные.

    Файл A

    Файл B

    Первая строка входного файла содержит число N  — общее количество пар в наборе. Каждая из следующих N строк содержит два натуральных числа, не превышающих 10 000.

    Пример входного файла:

    5

    15 8

    5 11

    6 3

    7 2

    9 14

    Для указанных данных надо выбрать числа 8, 5, 3, 2 и 9. Большинство из них нечётны, сумма выбранных чисел равна 27 и тоже нечётна. В ответе надо записать число 27.

    Вам даны два входных файла (A и B), каждый из которых имеет описанную выше структуру. В ответе укажите два числа: сначала значение искомой суммы для файла A, затем для файла B.

    Предупреждение: для обработки файла B не следует использовать переборный алгоритм, вычисляющий сумму для всех возможных вариантов, поскольку написанная по такому алгоритму программа будет выполняться слишком долго.

    Ответ:


    Автомат обрабатывает натуральное число N по следующему алгоритму.

    1.  Строится двоичная запись числа N.

    2.  Если N четное, то в конец полученной записи (справа) дописывается 0, в начало  — 1; если N  — нечётное в конец и начало дописывается по две единицы.

    3.  Результат переводится в десятичную систему и выводится на экран.

    Пример. Дано число N  =  13. Алгоритм работает следующим образом:

    1.  Двоичная запись числа N: 1101.

    2.  Число нечетное, следовательно, по две единицы по краям  — 11110111.

    3.  На экран выводится число 247.

    Укажите наименьшее число, большее 52, которое может является результатом работы автомата.

    Источник: ЕГЭ по информатике 24.06.2021. Основная волна. Вариант Евгения Джобса


    Дана последовательность из N натуральных чисел. Рассматриваются все её непрерывные подпоследовательности, такие что сумма элементов каждой из них кратна k  =  43. Найдите среди них подпоследовательность с максимальной суммой, определите её длину. Если таких подпоследовательностей найдено несколько, в ответе укажите количество элементов самой короткой из них.

    Входные данные

    Файл A

    Файл B

    Даны два входных файла (файл A и файл B), каждый из которых содержит в первой строке количество чисел N (1 ≤ N ≤ 10 000 000). Каждая из следующих N строк содержит одно натуральное число, не превышающее 10 000.

    Пример организации исходных данных во входном файле:

    7

    1

    3

    4

    93

    8

    5

    95

    В ответе укажите два числа: сначала значение искомой длины для файла А, затем  — для файла B.

    Предупреждение: для обработки файла B не следует использовать переборный алгоритм, вычисляющий сумму для всех возможных вариантов, поскольку написанная по такому алгоритму программа будет выполняться слишком долго.

    Источник: Демонстрационная версия ЕГЭ−2022 по информатике


    Алгоритм получает на вход натуральное число N > 1 и строит по нему новое число R следующим образом:

    1.  Вычисляется сумма чётных цифр в десятичной записи числа N. Если чётных цифр в записи нет, сумма считается равной нулю.

    2.  Вычисляется сумма цифр, стоящих на чётных местах в десятичной записи числа N без ведущих нулей. Места отсчитываются слева направо (от старших разрядов к младшим, начиная с единицы). Если число однозначное (цифр на чётных местах нет), сумма считается равной нулю.

    3.  Результатом работы алгоритма становится модуль разности полученных двух сумм.

    Пример. Дано число N  =  2021. Алгоритм работает следующим образом:

    1.  Чётные цифры в записи: 2, 0, 2, их сумма равна 4.

    2.  Цифры на чётных местах: 0, 1, их сумма равна 1.

    3.  Модуль разности полученных сумм равен 3.

    Результат работы алгоритма R  =  3.

    При каком наименьшем N в результате работы алгоритма получится R  =  13?


    Алгоритм получает на вход натуральное число N > 1 и строит по нему новое число R следующим образом:

    1.  Вычисляется сумма чётных цифр в десятичной записи числа N. Если чётных цифр в записи нет, сумма считается равной нулю.

    2.  Вычисляется сумма цифр, стоящих на чётных местах в десятичной записи числа N без ведущих нулей. Места отсчитываются слева направо (от старших разрядов к младшим, начиная с единицы). Если число однозначное (цифр на чётных местах нет), сумма считается равной нулю.

    3.  Результатом работы алгоритма становится модуль разности полученных двух сумм.

    Пример. Дано число N  =  2021. Алгоритм работает следующим образом:

    1.  Чётные цифры в записи: 2, 0, 2, их сумма равна 4.

    2.  Цифры на чётных местах: 0, 1, их сумма равна 1.

    3.  Модуль разности полученных сумм равен 3.

    Результат работы алгоритма R  =  3.

    При каком наименьшем N в результате работы алгоритма получится R  =  11?


    Алгоритм получает на вход натуральное число N и строит по нему новое число R следующим образом:

    1.  Строится двоичная запись числа N.

    2.  Складываются все цифры полученной двоичной записи. В конец записи (справа) дописывается остаток от деления суммы на 2.

    3.  Предыдущий пункт повторяется для записи с добавленной цифрой.

    4.  Результат переводится в десятичную систему.

    Пример. Дано число N  =  13. Алгоритм работает следующим образом:

    1.  Двоичная запись числа N: 1101.

    2.  Сумма цифр двоичной записи 3, остаток от деления на 2 равен 1, новая запись 11011.

    3.  Сумма цифр полученной записи 4, остаток от деления на 2 равен 0, новая запись 110110.

    4.  Результат работы алгоритма R  =  54.

    При каком наименьшем числе N в результате работы алгоритма получится R > 170? В ответе запишите это число в десятичной системе счисления.


    Алгоритм получает на вход натуральное число N и строит по нему новое число R следующим образом:

    1.  Строится двоичная запись числа N.

    2.  Складываются все цифры полученной двоичной записи. В конец записи (справа) дописывается остаток от деления суммы на 2.

    3.  Предыдущий пункт повторяется для записи с добавленной цифрой.

    4.  Результат переводится в десятичную систему.

    Пример. Дано число N  =  13. Алгоритм работает следующим образом:

    1.  Двоичная запись числа N: 1101.

    2.  Сумма цифр двоичной записи 3, остаток от деления на 2 равен 1, новая запись 11011.

    3.  Сумма цифр полученной записи 4, остаток от деления на 2 равен 0, новая запись 110110.

    4.  Результат работы алгоритма R  =  54.

    При каком наименьшем числе N в результате работы алгоритма получится R > 154? В ответе запишите это число в десятичной системе счисления.


    Ниже на 5-ти языках записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа a и b. Укажите наибольшее из таких чисел x, при вводе которых алгоритм напечатает сначала 2, а потом 14.

    Бэйсик Паскаль

    DIM X, A, B AS INTEGER

    INPUT X

    A = 0: B = 1

    WHILE X > 0

        A = A + 1

        B = B * (X MOD 10)

        X = X 10

    WEND

    PRINT A

    PRINT B

    var x, a, b : integer;

    begin

    readln(x);

    a := 0; b := 1;

    while x > 0 do

        begin

            a := a + 1;

            b := b * (x mod 10);

            x := x div 10;

        end;

    writeln(a); write(b);

    end.

    Си++ Алгоритмический

    #include <iostream>

    using namespace std;

    int main()

    {

        int x, a, b;

        cin >> x;

        a = 0; b = 1;

        while (x > 0){

            a = a + 1;

            b = b *(x%10);

            x= x / 10;

        }

        cout << a << endl << b endl;

    }

    алг

    нач

    цел x, a, b

    ввод x

    a := 0; b := 1

    нц пока x > 0

        a := a+1

        b := b * mod(x,10)

        x := div(x,10)

    кц

    вывод a, нс, b

    кон

    Python

    x = int(input())

    a = 0

    b = 1

    while x > 0:

        a += 1

        b *= x % 10

        x = x // 10

    print(a)

    print(b)


    Ниже на 5-ти языках записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа a и b. Укажите наибольшее из таких чисел x, при вводе которых алгоритм печатает сначала 2, а потом 72.

    Бэйсик Паскаль

    DIM X, A, B AS INTEGER

    INPUT X

    A=0: B=1

    WHILE X > 0

        A = A+1

        B = B*(X MOD 10)

        X = X 10

    WEND

    PRINT A

    PRINT B

    var x, a, b: integer;

    begin

        readln(x);

        a:=0; b:=1;

        while x>0 do

            begin

                a:=a+1;

                b:=b*(x mod 10);

                x:= x div 10;

            end;

    writeln(a); write(b);

    end.

    Си++ Алгоритмический

    #include <iostream>

    using namespace std;

    int main()

    {

        int x, a, b;

        cin >> x;

        a=0; b=1;

        while (x>0){

            a=a+1;

            b=b*(x%10);

            x= x/10;

        }

        cout << a << endl << b endl;

    }

    алг

    нач

    цел x, a, b

    ввод x

    a:=0; b:=1

    нц пока x>0

        a:=a+1

        b:=b*mod(x,10)

        x:=div(x,10)

    кц

    вывод a, нс, b

    кон

    Python

    x = int(input())

    a = 0

    b = 1

    while x > 0:

        a += 1

        b *= x % 10

        x = x // 10

    print(a)

    print(b)

    Всего: 1000    1–20 | 21–40 | 41–60 | 61–80 | 81–100 | 101–120 | 121–140 …

    Муниципальное казенное общеобразовательное учреждение
    «Октябрьский лицей»

    Калачевского муниципального района

    Волгоградской области

    Принято

    методическим советом

    Протокол № ___________

    от «___»__________2014г.

    Утверждено

    Директор МКОУ «Октябрьский лицей»

    _________Зиновьев В.В.

    от «___»__________2014г.

    Подготовка
    к ЕГЭ по информатике:

    алгоритмизация
    и программирование

    Программа элективного курса

    по информатике и ИКТ

      Составитель программы:

      учитель информатики

                            высшей квалификационной  
                            категории

                           Кукарцева Е.А.

    Волгоград, 2014

    I. ПОЯСНИТЕЛЬНАЯ
    ЗАПИСКА

    Программа курса «Подготовка  к ЕГЭ по
    информатике: алгоритмизация и программирование» направлена на расширение знаний
    и умений содержания по курсу информатики и ИКТ, а также на тренировку и
    отработку навыка решения тестовых заданий в формате ЕГЭ по теме . Необходимость
    создания данного элективного курса заключается в том, что количество часов,
    предусмотренное в базовом или профильном курсе на овладение технологией
    программирования предполагает лишь побочную подготовку к единому
    государственному экзамену.  Поэтому данный курс направлен на обучение школьников структурному программированию как
    методу, предусматривающему создание понятных, локально простых и удобочитаемых
    программ, характерными особенностями которых являются модульность,
    использование унифицированных структур следования, выбора и повторения, отказ
    от неструктурированных передач управления, ограниченное использование глобальных
    переменных.

    Структура
    элективного курса, сочетая в себе теоретические и практические занятия,
    представляет собой своеобразное погружение ученика в процесс наработки навыков
    прохождения тестовых испытаний по разным разделам курса информатики.

    Обучающимся будут
    предложены мыследеятельностные, презентационные, коммуникативные,
    информационные виды деятельности.

    Курс рекомендован обучающимся
    11-х классов старшей  школы, сдающих ЕГЭ по информатике.

           Цель курса: расширение содержания среднего образования
    по курсу информатики для повышения качества результатов ЕГЭ.

    Достижение  поставленной цели
    связывается с решением следующих задач:

    ·       
    изучение структуры и содержания контроль­ных измерительных
    материалов по информатике и ИКТ;

    ·       
    повторение методов решения тестовых заданий различного типа по теме
    «Алгоритмизация и программирование»;

    ·       
    формирование умения оформлять решение заданий с развернутым
    ответом в соответствии с требованиями инструкции по проверке.

    ·       
    отработка навыка решения заданий  части В и С  ЕГЭ по теме;

    В структуре изучаемого курса выделяются следующие
    три раздела:

    ·     «Контрольно-измерительные
    материалы ЕГЭ по информатике»,

    ·     «Тематический
    блок»

    ·     «Тренинг по
    вариантам».

    Изучение контрольно-измерительных материалов
    позволит обучающимся не только познакомиться со структурой и содержанием
    экзамена, но и произвести самооценку своих знаний на данном этапе, выбрать
    темы, требующие дополнительного изучения, спланировать дальнейшую подготовку к
    ЕГЭ.

    Содержание раздела «Тематический блок» включает изучение
    темы «Алгоритмизация и программирование».

    Последний раздел посвящен тренингу учащихся по
    вариантам, аналогичным КИМам текущего учебного года. Важным моментом данной
    работы является анализ полученных результатов.

    II. УЧЕБНО-ТЕМАТИЧЕСКИЙ
    ПЛАН

    № п/п

    Тема занятия

    Теория

    Практика

    Контрольно-измерительные материалы ЕГЭ по
    информатике

    1

    Особенности проведения ЕГЭ по информатике.

    1

    2

    Специфика тестовой формы контроля. Виды тестовых заданий.

    1

    3

    Структура и содержание КИМов по информатике.

    1

    4

    Диагностическая работа.

    1

    Тематический блок

    5

    Проверка
    закономерностей методом рассуждений.

    1

    6

    Анализ и построение
    алгоритмов для исполнителей.

    1

    7

    Выполнение
    алгоритмов для исполнителя Робот.

    1

    8

    Pascal. Оператор присваивания и ветвления.

    1

    9

    Анализ программ с
    циклами.

    1

    10

    Обработка массивов
    и матриц.

    1

    11

    Анализ программы с
    циклами и условными операторами.

    1

    12

    Анализ программ с
    циклами и подпрограммами.

    1

    13

    Поиск и исправление
    ошибок в небольшом фрагменте программы (часть С).

    1

    14

    Алгоритмы обработки
    массивов.

    1

    Тренинг по вариантам.

    15

    Тренинг по
    вариантам.

    1

    16

    Тренинг по
    вариантам.

    1

    17

    Тренинг по
    вариантам.

    1

    Итого:

    5

    12

    III.
    СОДЕРЖАНИЕ
    ПРОГРАММЫ

    Раздел 1. «Контрольно-измерительные
    материалы ЕГЭ по информатике»

    1.1. Основные подходы к
    разработке контрольных измерительных материалов ЕГЭ по информатике.

            ЕГЭ как форма независимой оценки уровня
    учебных достижений выпускников 11 класса.  Особенности проведения ЕГЭ по
    информатике. Специфика тестовой формы контроля. Виды тестовых заданий.
    Структура и содержание КИМов по информатике. Основные термины ЕГЭ.

    Раздел 2 «Тематический блок»

    2.1. Тематический блок
    «Алгоритмизация и программирование»

    Основные понятия, связанные с использованием основ­ных
    алгоритмических конструкций. Решение задач на исполнение и анализ отдельных
    алгоритмов, записанных в виде блок-схемы, на алгоритмическом языке или на
    языках про­граммирования. Повторение методов решения задач  на составление
    алгоритмов для конкретного исполнителя (задание с кратким ответом) и анализ
    дерева игры.

    Раздел 3. «Тренинг по вариантам»

    3.1. Единый государственный экзамен
    по информатике.

    Выполнение тренировочных заданий части А, В и С.
    Проведение пробного ЕГЭ с последующим разбором результатов.

     

    IV. ТРЕБОВАНИЯ К УРОВНЮ ПОДГОТОВКИ 
    ОБУЧАЮЩИХСЯ:

    В результате
    изучения данного элективного курса обучающиеся должны

    знать

    ·       
    цели проведения ЕГЭ;

    ·       
    особенности проведения ЕГЭ по информатике;

    ·       
    структуру и содержание КИМов ЕГЭ по информатике.

    уметь

    ·       
    оформлять решение заданий с выбором ответа и кратким ответом на
    бланках ответа в соответствии с инструкцией;

    ·       
    оформлять решение заданий с развернутым ответом в соответствии с
    требованиями инструкции по проверке;

    ·       
    применять различные методы решения тестовых заданий различного
    типа по тем «Алгоритмизация и программирование».

    Курс рассчитан на 17 часов лекционно-практических
    занятий  и  проводится в течение учебного года по 1 часу в неделю.

    V. МЕТОДЫ ОБУЧЕНИЯ

    Основными методами обучения в данном элективном
    курсе являются практические методы выполнении заданий практикума. Практическая
    деятельность позволяет развить исследовательские и творческие способности
    учащихся, а также отработать основные умения. Роль учителя состоит в кратком по
    времени объяснении нового материала и постановке задачи, а затем консультировании
    учащихся в процессе выполнения практического задания.

    Для реализации содержания обучения по данной
    программе все теоретические положения дополняются и закрепляются практическими
    заданиями, чтобы учащиеся на практике могли отработать навык выполнения
    действий по решению поставленной задачи.

    Для обучения учеников по данной программе
    применяются следующие методы обучения:

    ·       
    демонстрационные (презентации,  обучающие программные средства);

    ·       
    словесные (лекции, консультации);

    ·       
    практические (практические работы; выбор программного обеспечения 
    для выполнения своей работы).

    VI. ФОРМЫ ОРГАНИЗАЦИИ УЧЕБНЫХ
    ЗАНЯТИЙ

    Учебно-методический комплект предусматривает
    организацию учебного процесса в двух взаимосвязанных и взаимодополняющих
    формах:

    — урочная форма, в которой учитель объясняет
    новый материал и консультирует учащихся в процессе выполнения ими практических
    заданий на компьютере;

    — внеурочная форма, в которой учащиеся после
    уроков (дома или в школьном компьютерном классе) самостоятельно выполняют
    задания.

    VII. СПИСОК ЛИТЕРАТУРЫ

    1. Самылкина Н.Н.
    и др. Готовимся  к ЕГЭ по информатике. Элективный курс: учебное пособие. – М.:
    БИНОМ. Лаборатория знаний, 2008. – 298 с.

    2. Информатика и
    ИКТ. Подготовка к ЕГЭ/ Под ред. проф. Н.В.Макаровой. – СПб.: Питер, 2010. – 160
    с.

    3. ЕГЭ — 2008. ИНФОРМАТИКА.
    Методические материалы.М.: Эксмо, 2009.  

    4. ЕГЭ 2008. Информатика. Федеральный банк экзаменационных
    материалов /  Авт.-сост. П.А. Якушкин, С.С.Крылов. – М.: Эксмо, 2008. – 128 с.

    5. Репетитор по информатике для подготовки к ЕГЭ/ Молодцов Валерий, Рыжикова
    Наталья — М., Феникс, 2009

    6. ИНФОРМАТИКА.
    ЕГЭ-это очень просто!/ Молодцов В.А. — М., Феникс, 2011

    VIII. СПИСОК ИНТЕРНЕТ-РЕСУРСОВ 
    ПО ПОДГОТОВКЕ К ЕГЭ

    1.     URL: http://www.fipi.ru/

    2.     URL: http://ege.edu.ru/,  Портал информационной поддержки единого
    государственного экзамена.

    3.     URL: http:/edu.ru/, 
    Федеральный портал «Российское образование».

    4.     URL: http://www.school.edu.ru, Российский
    общеобразовательный портал.  

    5.     URL: http://www.egeinfo.ru/, Все о ЕГЭ.  

    6.     URL:  http://www.gosekzamen.ru/,
    Российский образовательный портал Госэкзамен.ру.  

    7.     URL: http://www.gotovkege.ru/, Готов к ЕГЭ.

    8.     URL: http://www.ctege.org/.

    Тренинг №3(итоговый)

    Часть А

    Вариант 1

    A6

    Определите значение целочисленных
    переменных
    a и b после выполнения фрагмента
    программы (ниже представлена одна и та же программа, записанная на разных
    языках программирования
    ):

    Бейсик

    Паскаль

    Алгоритмический

    a=42
    b=14
    a=ab
    b=a*b
    a=ba

      — стандартная операция, вычисляющая
    результат деления нацело первого аргумента на второй

    a:=42;

    b:=14;
    a:=a div b;
    b:=a*b;
    a:=b div a; {div — 

    стандартная операция, вычисляющая результат деления нацело первого
    аргумента на второй}

    a:=42

    b:=14
    a:= div(a, b)
    b:= a*b
    a:= div(b, a) | div —

    стандартная функция, вычисляющая результат деления нацело
    первого аргумента на второй|

    1)

    a = 42,
    b = 14

    2)

    a = 1,
    b = 42

    3)

    a = 0,
    b = 588

    4)

    a = 14,
    b = 42

    A7

    Значения двух
    массивов А[1..200] и В [1..200] задаются с помощью следующего фрагмента
    программы:

    Бейсик

    Паскаль

    Алгоритмический

    FOR n = 1 TO 200

    A(n)=n+100

    NEXT n

     FOR n = 1 TO 200

    B(n)=2*A(n)-500

    NEXT n

     For  n:=1 to 200 do

    A[n]:=n+100;

    for n:=1 то 200

    B(n):=2*A[n]-500;

     нц для n от 1 до
    200

    A[n]=n+100

    кц

    нц для n от 1 до
    200

    B[n]=2*A(n)-500

    кц

    Сколько элементов массива В будут иметь положительный
    значения?

    1)

    50

    2)

    51

    3)

    149

    4)

    150

    A19

    Определите значение переменной a после выполнения фрагмента алгоритма:

    Примечание: знаком * обозначено умножение,
    знаком := обозначена операция присваивания.

    1)

    8

    2)

    16

    3)

    32

    4)

    12

    А20

    В приведенном ниже
    фрагменте алгоритма, записанном на алгоритмическом языке, переменные
    a, b, c
    имеют тип «строка», а переменные
    i, k – тип «целое». Используются следующие функции:

    Длина (a) – возвращает количество символов в строке a. (Тип «целое»)

    Извлечь (a, i) – возвращает i-тый (слева) символ в строке a. (Тип «строка»)

    Склеить (a, b) – возвращает строку, в которой
    записаны сначала все символы строки
    a, а затем все
    символы строки
    b. (Тип
    «строка»)

    Значения строк
    записываются в одинарных кавычках
    (Например,
    a := ‘дом’).

    Фрагмент
    алгоритма:

    i := Длина
    (a)

    k := 2

    b := ‘А

    пока i > 0

    нц

    c := Извлечь
    (a, i)

    b := Склеить
    (b, c)

    i := i – k

    кц

    b := Склеить
    (b, Т’)

    Какое значение
    будет у переменной
    b после выполнения
    вышеприведенного фрагмента алгоритма, если значение переменной
    a было ‘ПОЕЗД’?

    1)

    ‘АДЕПТ’

    2)

    ‘АДЗЕОП’

    3)

    ‘АДТЕТПТ’

    4)

    ‘АДЗОТ’

    Часть 2

                                                                          
    В6

    Алгоритм вычисления
    значения функции F(n), где n – натуральное число, задан следующими
    соотношениями:

    F(1) = 1

    F(n) = F(n–1) * (n + 1),
    при n > 1

    Чему равно значение
    функции F(5)? В ответе запишите только натуральное число.

                                                    
                          В8

    Ниже записана программа. Получив на
    вход число , эта
    программа печатает два числа,  и . Укажите наибольшее из таких чисел , при вводе которых алгоритм
    печатает сначала 3, а потом 8.

    var x, L, M: integer;

    begin

      readln(x);

      L:=0; M:=0;

      while x > 0 do begin

        L:= L + 1;

        if x mod 2 = 0 then

          M:= M + x mod 10;

        x:= x div 10;

      end;

      writeln(L); write(M);

    end.

                       
                                                       В13

    У исполнителя Калькулятор две команды,
    которым присвоены номера:

    прибавь 1

         умножь на 2

    Сколько есть программ,
    которые число 1 преобразуют в число 16? 

    Часть 3

    С1

    Требовалось написать
    программу, которая решает уравнение «» относительно x для любых чисел a и b, введенных
    с клавиатуры. Все числа считаются действительными. Программист торопился и
    написал программу неправильно:

    var
    a,b,x: real;

    begin

    readln(a,b,x);

    if
    a = 0 then

    if
    b = 0 then

    write
    (‘любое число’)

    else
    write (‘нет решений’)

    else

    if
    b = 0 then

    write(‘x
    = 0’)

    else
    write(‘x =’,b/a,’
    или x =’,-b/a);

    end.

    Последовательно выполните
    три задания: 1) Приведите пример таких чисел a, b, x, при которых программа неверно
    решает поставленную задачу. 2) Укажите, какая часть программы является лишней.
    3) Укажите, как нужно доработать программу, чтобы не было случаев ее
    неправильной работы. (Это можно сделать несколькими способами, поэтому можно
    указать любой способ доработки исходной программы).

    С2

    Опишите на русском языке или одном из
    языков программирования алгоритм поиска номер первого из двух последовательных
    элементов в целочисленном массиве из 30 элементов, сумма которых максимальна
    (если таких пар несколько, то можно выбрать любую из них).

    С3

    На вход программы
    подается текст на английском языке, заканчивающийся точкой (другие символы “.”
    в тексте отсутствуют). Требуется написать программу, которая будет определять и
    выводить на экран английскую букву, встречающуюся в этом тексте чаще всего, и
    количество там таких букв. Строчные и прописные буквы при этом считаются не
    различимыми. Если искомых букв несколько, то программа должна выводить на экран
    первую из них по алфавиту. Например, пусть файл содержит следующую запись:
         It is not a simple task. Yes!
    Чаще всего здесь встречаются буквы I, S и T (слово Yes в подсчете не
    учитывается, так как расположено после точки). Следовательно, в данном случае
    программа должна вывести два символа, разделенных пробелом: I 3

    Вариант 2

    Часть 1

    A6

    Определите значение целочисленных
    переменных
    a и b после выполнения фрагмента
    программы:

    Бейсик

    Паскаль

    Алгоритмический

    a = 1819
    b = (a 100) * 10 + 9
    a = (10*ba)
    MOD 100
    ‘ и
    MOD – операции, вычисляющие результат деления
    нацело первого аргумента на второй и остаток от деления соответственно

    a:= 1819;
    b:= (a div 100)*10+9;
    a:= (10*ba) mod 100;
    {
    div и mod – операции, вычисляющие
    результат деления нацело первого аргумента на второй и остаток от деления
    соответственно}

    a:= 1819
    b:= div(a,100)*10+9
    a:= mod(10*b
    a,100)
    |d
    iv и mod – функции, вычисляющие
    результат деления нацело первого аргумента на второй и остаток от деления
    соответственно|

    1)

    a = 81,
    b = 199

    2)

    a = 81,
    b = 189

    3)

    a = 71,
    b = 199

    4)

    a = 71,
    b = 189

    A7

    Значения двух
    массивов А[1..300] и В [1..300] задаются с помощью следующего фрагмента
    программы:

    Бейсик

    Паскаль

    Алгоритмический

    FOR n = 1 TO 300

    A(n)=100-n

    NEXT n

     FOR n = 1 TO 300

    B(n)=2*A(n)+1

    NEXT n

     For  n:=1 to 300 do

    A[n]:=100-n;

    for n:=1 то 300

    B(n):=2*A[n]+1;

     нц для n от 1 до
    300

    A[n]=100-n

    кц

    нц для n от 1 до
    300

    B[n]=2*A(n)+1

    кц

    Сколько элементов массива В будут иметь положительный
    значения?

    1)

    99

    2)

    100

    3)

    200

    4)

    201

    A19

    Определите значение переменной c после выполнения фрагмента алгоритма:

    Примечание: знаком * обозначено умножение,
    знаком := обозначена операция присваивания.

    1)

    1

    2)

    45

    3)

    55

    4)

    66

    А20

    В приведенном ниже
    фрагменте алгоритма, записанном на алгоритмическом языке, переменные
    a, b, c
    имеют тип «строка», а переменные
    i, k – тип «целое». Используются следующие функции:

    Длина (a) – возвращает количество символов в строке a. (Тип «целое»)

    Извлечь (a, i) – возвращает i-тый (слева) символ в строке a. (Тип «строка»)

    Склеить (a, b) – возвращает строку, в которой
    записаны сначала все символы строки
    a, а затем все
    символы строки
    b. (Тип
    «строка»)

    Значения строк
    записываются в одинарных кавычках
    (Например,
    a := ‘дом’).

    Фрагмент
    алгоритма:

    n := Длина
    (a)

    k := 2

    b := ‘Р

    пока i < n

    нц

    c := Извлечь
    (a, i)

    b := Склеить
    (b, c)

    i := i + k

    кц

    b := Склеить
    (b, ДА’)

    Какое значение
    будет у переменной
    b после выполнения
    вышеприведенного фрагмента алгоритма, если значение переменной
    a было ‘МОТОР’?

    1)

    ‘РМТДА’

    2)

    ‘РОТОДА’

    3)

    ‘РОТОМДА’

    4)

    ‘РОТОНДА’

    Часть 2

                                                                           В6

    Алгоритм вычисления
    значения функции F(n), где n – натуральное число, задан следующими
    соотношениями:

    F(1) = 1

    F(n) = F(n–1) * (2*n +
    1), при n > 1

    Чему равно значение
    функции F(4)? В ответе запишите только натуральное число.

                                                                          
    В8

    Ниже записана программа. Получив на
    вход число , эта
    программа печатает два числа,  и . Укажите наибольшее из таких чисел , при вводе которых
    алгоритм печатает сначала 3, а потом 7.

    var x, L, M: integer;

    begin

      readln(x);

      L:=0; M:=0;

      while x > 0 do begin

        L:= L + 1;

        M:= M + x mod 10;

        x:= x div 10;

      end;

      writeln(L); write(M);

    end.

                                                                          
    В13

    У исполнителя Калькулятор две
    команды, которым присвоены номера:

    1. прибавь 1

    2. умножь на 4

    Сколько есть программ, которые число 1
    преобразуют в число 55? 

    Часть 3

    С1

    Требовалось написать
    программу, которая решает уравнение «» относительно x для любых чисел a и b, введенных
    с клавиатуры. Все числа считаются действительными. Программист торопился и
    написал программу неправильно:

    var a, b, x: real;

    begin

    readln(a,b,x);

    if b = 0 then

    write(‘x = 0’)

    else

    if a = 0 then

    write(‘нет решений’)

    else

    write(‘x =’,-b/a);

    end.

    Последовательно выполните
    три задания: 1) Приведите пример таких чисел a, b, x, при которых программа
    неверно решает поставленную задачу. 2) Укажите, какая часть программы является
    лишней. 3) Укажите, как нужно доработать программу, чтобы не было случаев ее
    неправильной работы. (Это можно сделать несколькими способами, поэтому можно
    указать любой способ доработки исходной программы).

    С2

    Опишите на русском языке или одном из
    языков программирования алгоритм подсчета числа элементов, равных
    максимальному, в числовом массиве из 30 элементов.

    С3

    На вход программы подается 366 строк,
    которые содержат информацию о среднесуточной температуре всех дней 2008 года.
    Формат каждой из строк следующий: сначала записана дата в виде dd.mm (на запись
    номера дня и номера месяца в числовом формате отводится строго два символа,
    день от месяца отделен точкой), затем через пробел записано значение
    температуры — число со знаком плюс или минус, с точностью до 1 цифры после
    десятичной точки. Данная информация отсортирована по значению температуры, то
    есть хронологический порядок нарушен. Требуется написать программу на языке
    Паскаль или Бейсик, которая будет выводить на экран информацию о месяце
    (месяцах), среднемесячная температура у которого (которых) наименее отклоняется
    от среднегодовой. В первой строке вывести среднегодовую температуру. Найденные
    значения для каждого из месяцев следует выводить в отдельной строке в виде:
    номер месяца, значение среднемесячной температуры, отклонение от среднегодовой
    температуры

    ИНФОРМАТИКА и ИКТ, 11 класс, спецификация из демо-варианта.

    Возможные алгоритмические задачи для подраздела 1.1 перечня требований к уровню подготовки выпускников, достижение которых проверяется на едином государственном экзамене по информатике и ИКТ.

    1. Нахождение минимума и максимума двух, трех, четырех данных чисел без использования массивов и циклов.
    2. Нахождение всех корней заданного квадратного уравнения.
    3. Запись натурального числа в позиционной системе с основанием,  меньшим или равным 10. Обработка и преобразование такой записи числа.
    4. Нахождение сумм, произведений элементов данной конечной числовой последовательности (или массива).
    5. Использование цикла для решения простых переборных задач (поиск наименьшего простого делителя данного натурального числа, проверка числа на простоту и т.д.).
    6. Заполнение элементов одномерного и двумерного массивов по заданным правилам.
    7. Операции с элементами массива. Линейный поиск элемента. Вставка и удаление элементов в массиве. Перестановка элементов данного массива в обратном порядке. Суммирование элементов массива. Проверка соответствия элементов массива некоторому условию.
    8. Нахождение второго по величине (второго максимального или второго минимального) значения в данном массиве за однократный просмотр массива.
    9. Нахождение минимального (максимального) значения в данном массиве и количества элементов, равных ему, за однократный просмотр массива.
    10. Операции с элементами массива, отобранных по некоторому условию (например, нахождение минимального четного элемента в массиве, нахождение количества и суммы всех четных элементов в массиве).
    11. Сортировка массива.
    12. Слияние двух упорядоченных массивов в один без использования сортировки.
    13. Обработка отдельных символов данной строки. Подсчет частоты появления символа в строке.
    14. Работа с подстроками данной строки с разбиением на слова по пробельным символам. Поиск подстроки внутри данной строки, замена найденной подстроки на другую строку.

    © 2018 Федеральная служба по надзору в сфере образования и науки Российской Федерации


    1


    ГОТОВИМСЯ К ЕГЭ по информатике /алгоритмизация и программирование/


    2


    А5 – выполнение математического линейного алгоритма А6 – выполнение циклического алгоритма над массивом А18 – выполнение алгоритма, записанного на естественном языке В2 – выполнение алгоритма, представленного блок- схемой В5 – разработка алгоритма с применением оригинального набора команд НАВЫКИ АЛГОРИТМИЗАЦИИ, ПРОВЕРЯЕМЫЕ В ЧАСТЯХ А и В


    3


    ВЫПОЛНЕНИЕ АЛГОРИТМА (МЕТОДИКА ПРОВЕРКИ ПРОГРАММЫ) abc А5 Определите значение переменной с после выполнения следующего фрагмента программы. БейсикПаскальАлгоритмический a = 5 a = a + 6 b = – a c = a – 2 * b a := 5; a := a + 6; b := – a; c := a – 2 * b; a := 5 a := a + 6 b := – a c := a – 2 * b 1) c = – 11 2) c = 15 3) c = 27 4) c = 33


    4


    ВЫПОЛНЕНИЕ АЛГОРИТМА (МЕТОДИКА ПРОВЕРКИ ПРОГРАММЫ) i j A11A12A13 2 A21A22 3 A33 C Ответ 3) А6 Дан фрагмент программы, обрабатывающей двумерный массив А размера n×n. БейсикПаскальАлгоритмический k=1 FOR i=1 TO n c=A(i,i) A(i,i)=A(k,i) A(k,i)=c NEXT i k:=1; for i:=1 to n begin c:=A[i,i]; A[i,i]:=A[k,i]; A[k,i]:=c end k:=1 нц для i от 1 до n c:=A[i,i] A[i,i]:=A[k,i] A[k,i]:=c кц Представим массив в виде квадратной таблицы, в которой для элемента массива А[i,j] величина i является номером строки, а величина j – номером столбца, в котором расположен элемент. Тогда данный алгоритм меняет местами 1) два столбца в таблице 2) две строки в таблице 3) элементы диагонали и k-той строки таблицы 4) элементы диагонали и k-того столбца таблицы


    5


    F4


    6


    ab a=256 a:=1 b:=1 a:=a*2 b:=b+a Да Нет В2 Запишите значение переменной b после выполнения фрагмента алгоритма: Примечание: знаком := обозначена операция присваивания, знаком * обозначена операция умножения.


    7


    a


    8


    В5 У исполнителя Калькулятор две команды, которым присвоены номера: 1. прибавь 3 2. умножь на 4 Выполняя первую из них, Калькулятор прибавляет к числу на экране 3, а выполняя вторую, умножает его на 4. Запишите порядок команд в программе получения из числа 3 числа 57, содержащей не более 6 команд, указывая лишь номера команд. (Например, программа – это программа умножь 4 прибавь 3 умножь 4 прибавь 3 прибавь 3, которая преобразует число 2 в 50.) Проверяется умение формализовывать алгоритм (записывать коды команд) и не выходить за пространство команд (использовать только допустимые команды).


    9


    У исполнителя две команды, которым присвоены номера: 1. прибавь 1 2. умножь на 2 Преобразуйте с помощью данного набора команд а) число 4 в число 9, б) число 1 в число 16, в) число 2 в число 14, г) число 5 в число 28, … Разрабатывайте задания сами!


    10


    НАВЫКИ ПРОГРАММИРОВАНИЯ, ПРОВЕРЯЕМЫЕ В ЧАСТИ С С1 умение анализировать текст уже готовой программы, простейшая логика (недостаток или избыток данных при вводе, достаточность условий при поиске решения)С1 умение анализировать текст уже готовой программы, простейшая логика (недостаток или избыток данных при вводе, достаточность условий при поиске решения) [разветвляющиеся алгоритмы] [разветвляющиеся алгоритмы] С2 элементарная работа с массивомС2 элементарная работа с массивом [сочетание цикла и ветвления] [сочетание цикла и ветвления] С4 умение выполнять анализ данных в строке и массивеС4 умение выполнять анализ данных в строке и массиве [сочетание нескольких циклов] [сочетание нескольких циклов]


    11


    С (x>=0) and (y =sin(x)) and (x =0) and (y =sin(x)) and (x


    12


    С |x|=b/a b/a>=0 a 0 a 0 if b/a < 0 then write(нет решений) write(нет решений)else


    13


    С ПРОГРАММА НА ПАСКАЛЕ ПРОГРАММА НА БЕЙСИКЕ ПРОГРАММА НА СИ var a, b, x: real; begin readln(a,b,x); if b = 0 then write(‘x = 0’) else if a = 0 then write(‘нет решений’) else write(‘x =’,-b/a); end. INPUT a, b, x IF b = 0 THEN PRINT «x = 0» ELSE IF a = 0 THEN PRINT «нет решений» ELSE PRINT «x=»,-b/a ENDIF END void main(void) { float a,b,x; scanf(«%f%f%f», &a,&b,&x); if (b==0) printf(«x=0»); else if (a==0) printf(«нет решений»); else printf(«x=%f»,-b/a); } Последовательно выполните три задания: 1) Приведите пример таких чисел a, b, x, при которых программа неверно решает поставленную задачу. 2) Укажите, какая часть программы является лишней. 3) Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы). Требовалось написать программу, которая решает уравнение «ax+b=0» относительно x для любых чисел a и b, введенных с клавиатуры. Все числа считаются действительными. Программист торопился и написал программу неправильно. x = — b/a a 0 1) a = 0 b = 0, x = 0 (значение x можно не указывать, допустим ответ, что x – любое число) 2) Лишняя часть: не нужно вводить x с клавиатуры, верно: readln(a,b); 3) Возможная доработка: readln(a,b); if a = 0 then if b = 0 then write(‘любое число’) else write(‘нет решений’) else write(‘x=’,-b/a); (могут быть и другие способы доработки).

    А12 (повышенный уровень, время – 5 мин)

    Тема:  Работа с массивами и матрицами в языке программирования[1].

    Что нужно знать:

    • работу цикла for (цикла с переменной)
    • массив – это набор однотипных элементов, имеющих общее имя и расположенных в памяти рядом
    • для обращения к элементу массива используют квадратные скобки, запись  A[i] обозначает элемент массива A с номером (индексом)  i
    • матрица (двухмерный массив) – это прямоугольная таблица однотипных элементов
    • если матрица имеет имя A, то обращение A[i,k] обозначает элемент, расположенный на пересечении строки i и столбца k
    • элементы, у которых номера строки и столбца совпадают, расположены на главной диагонали[2]

    A[1,1]

    A[2,2]

    A[3,3]

    A[4,4]

    • выше главной диагонали расположены элементы, у которых номер строки меньше номера столбца:

    A[1,2]

    A[1,3]

    A[1,4]

    A[2,3]

    A[2,4]

    A[3,4]

    • ниже главной диагонали расположены элементы, у которых номер строки больше номера столбца:

    A[2,1]

    A[3,1]

    A[3,2]

    A[4,1]

    A[4,2]

    A[4,3]

    Ещё пример задания:

    В программе используется одномерный целочисленный массив A с индексами от 0 до 9. Ниже представлен фрагмент программы, записанный на разных языках программирования, в котором значения элементов сначала задаются, а затем меняются.  

    for i:=0 to 9 do

      A[i]:=9-i;

    for i:=0 to 4 do begin

      k:=A[i];

      A[i]:=A[9-i];

      A[9-i]:=k;

    end;

    Чему будут равны элементы этого массива после выполнения фрагмента программы?

            1)  9 8 7 6 5 4 3 2 1 0

            2) 0 1 2 3 4 5 6 7 8 9

            3) 9 8 7 6 5 5 6 7 8 9

            4) 0 1 2 3 4 4 3 2 1 0        

    Решение:

    1. выясним, как заполняется массив в первом цикле

    for i:=0 to 9 do

      A[i]:=9-i;

    здесь элемент A[0] равен 9, элемент A[1]=8 и т.д. до A[9]=0

    1. рассмотрим второй цикл, в котором операторы

      k:=A[i];

      A[i]:=A[9-i];

      A[9-i]:=k;

    меняют местами элементы A[i] и A[9-i]

    1. второй цикл выполняется всего 5 раз, то есть останавливается ровно на половине массива

    for i:=0 to 4 do begin

      …

    end;

    таким образом в нем меняются элементы A[0]A]9], A[1]A]8], A[2]A]7], A[3]A]6] и A[4]A]5]

    1. в результате массив оказывается «развернут» наоборот, элемент A[0] (он был равен 9) стал последним, следующий (A[1]=8) – предпоследним и т.д., то есть получили

    0 1 2 3 4 5 6 7 8 9

    1. Ответ: 2.

    Ещё пример задания:

    Дан фрагмент программы, обрабатывающей двухмерный массив A размера n×n.

    k := 1;

    for i:=1 to n do begin

      c := A[i,i];

      A[i,i] := A[k,i];

      A[k,i] := c;

    end

    Представим массив в виде квадратной таблицы, в которой для элемента массива A[i,j] величина i является номером строки, а величина j – номером столбца, в котором расположен элемент. Тогда данный алгоритм меняет местами

            1) два столбца в таблице

            2) две строки в таблице

            3) элементы диагонали и k-ой строки таблицы

            4) элементы диагонали и k-го столбца таблицы

    Решение:

    1. сначала разберемся, что происходит внутри цикла; легко проверить (хотя бы ручной прокруткой, если вы сразу не узнали стандартный алгоритм), что операторы

      c := A[i,i];

      A[i,i] := A[k,i];

      A[k,i] := c;

    меняют местами значения A[i,i] и  A[k,i], используя переменную c в качестве вспомогательной ячейки;

    1. элемент матрицы  A[i,i], у которого номера строки и столбца одинаковые, стоит на главной диагонали; элемент A[k,i] стоит в том же столбце i, но в строке с номером k; это значит, что в столбце i меняются местами элемент на главной диагонали и элемент в строке k

    i

    k

    A[k,i]

    i

    A[i,i]

    1. так как эти операторы находятся в цикле, где переменная i принимает последовательно все значения от 1 до n, обмен выполняется для всех столбцов матрицы; то есть, все элементы главной диагонали меняются с соответствующими элементами строки  k
    2. перед циклом стоит оператор присваивания k := 1;, а после него переменная k не меняется; поэтому в программе элементы главной диагонали обмениваются с первой строкой
    3. таким образом, правильный ответ – 3.

    Еще пример задания:

    Значения двух массивов A[1..100] и B[1..100] задаются с помощью следующего фрагмента программы:

    for n:=1 to 100 do

      A[n] := (n-80)*(n-80);

    for n:=1 to 100 do

      B[101-n] := A[n];

    Какой элемент массива B будет наибольшим?

            1) B[1]        2) B[21]        3) B[80]        4) B[100]

    Решение:

    1. здесь два цикла, в первом из них заполняется массив А, во втором – массив В
    2. в элемент массива A[n] записывается квадрат числа n-80; все элементы массива А неотрицательны (как квадраты чисел)
    3. посмотрим чему равны некоторые элементы массива А:

    A[1] = (1–80)2  = (–79)2 = 792        A[2] = (2–80)2  = (–78)2 = 782

    A[80] = (80–80)2  = (0)2 = 0        A[81] = (81–80)2  = (1)2 = 1

    A[99] = (99–80)2  = 192                A[100] = (100–80)2  = 202

    1. таким образом, при увеличении n от 1 до 80 значение A[n] уменьшается от 792  до нуля, а потом (для n > 80) возрастает до 202
    2. отсюда следует, что максимальное значение в массиве A – это A[1] = 792
    3. во втором цикле для всех номеров n от 1 до 100 выполняется оператор

      B[101-n] := A[n];

    который просто переписывает элементы массива A в массив В, «развертывая» массив в обратном порядке (элемент A[1] будет записан в B[100], а A[100] – в B[1])

    1. A[1], наибольший элемент массива А, будет записан в B[100], поэтому B[100] – наибольший элемент в массиве В
    2. таким образом, правильный ответ – 4.

    Еще пример задания:

    Значения элементов двухмерного массива A[1..10,1..10] задаются с помощью следующего фрагмента программы:

    for i:=1 to 10 do

    for k:=1 to 10 do

    if i > k then

         A[i,k] := 1

    else A[i,k] := 0;

    Чему равна сумма элементов массива после выполнения этого фрагмента программы?

            1) 45        2) 50        3) 90        4) 100

    Решение:

    1. в программе есть вложенный цикл, в котором переменная i обозначает строку, а k – столбец матрицы
    2. элементы, для которых i=k – это главная диагональ матрицы, поэтому элементы, для которых i > k (только они будут равны 1), находятся под главной диагональю
    3. в первой строке единичных элементов нет, во второй есть один такой элемент, в третьей – 2, в последней (10-ой) их 9, поэтому сумма элементов массива равна

    1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 = 45

    1. таким образом, правильный ответ – 1.
    2. при большом размере массива (например, 100 на 100) суммирование может оказаться трудоемким, поэтому лучше вспомнить формулу для вычисления суммы элементов арифметической прогрессии (именно такая прогрессия у нас, с шагом 1):

    ,

    где  — количество элементов, а и  – соответственно первый и последний элементы последовательности; в данном случае имеем

    .

    1. если приведенная выше формула прочно забыта, можно попытаться сгруппировать слагаемые в пары с равной суммой (как сделал, будучи школьником, великий математик К.Ф. Гаусс), например:

    Еще пример задания:

    Значения элементов двухмерного массива A[1..10,1..10] сначала равны 5. Затем выполняется следующий фрагмент программы:

    for i:=1 to 5 do

      for j:=1 to 4 do begin

        A[i,j]:=A[i,j]+5; { 1 }

        A[j,i]:=A[j,i]+5; { 2 } 

      end;

    Сколько элементов массива будут равны 10?

            1) 8        2) 16        3) 24        4) 0

    Решение (вариант 1, анализ алгоритма):

    1

    2

    3

    4

    5

    6

    7

    1

    2

    3

    4

    5

    6

    7

    1. обратим внимание, что в двойном цикле переменная i изменяется от 1 до 5, а j – от 1 до 4 (на 1 шаг меньше)
    2. внутри цикла в операторе, отмеченном цифрой 1 в комментарии, в записи A[i,j] переменная i – это строка, а j – столбец, поэтому по одному разу обрабатываются все элементы массива, выделенные зеленым цветом:

    1

    2

    3

    4

    5

    6

    7

    1

    2

    3

    4

    5

    6

    7

    1. это значит, что если оставить только один первый оператор внутри цикла, все выделенные элементы увеличиваются на 5 и станут равны 10
    2. теперь рассмотрим второй оператор внутри цикла: в записи A[j,i] переменная i – это столбец, а j – строка, поэтому по одному разу обрабатываются (увеличиваются на 5 ) все элементы массива, выделенные рамкой красного цвета на рисунке справа
    3. теперь хорошо видно, что левый верхний угол массива (квадрат 4 на 4, синяя область) попадает в обе области, то есть, эти 16 элементов будут дважды увеличены на 5: они  станут равны 15 после выполнения программы
    4. элементы, попавшие в зеленый и красный «хвостики» обрабатываются (увеличиваются на 5) по одному разу, поэтому они-то и будут равны 10
    5. всего таких элементов – 8 штук
    6. таким образом, правильный ответ – 1.

    Решение (вариант 2, прокрутка небольшого массива):

    1. понятно, что в программе захватывается только левый верхний угол массива, остальные элементы не меняются
    2. сократим размер циклов так, чтобы можно было легко выполнить программу вручную; при этом нужно сохранить важное свойство: внутренний цикл должен содержать на 1 шаг меньше, чем внешний:

    for i:=1 to 3 do

      for j:=1 to 2 do begin

        A[i,j]:=A[i,j]+5; { 1 }

        A[j,i]:=A[j,i]+5; { 2 } 

      end;

    1. выполняя вручную этот вложенный цикл, получаем

    1

    2

    3

    4

    5

    1

    15

    15

    10

    5

    5

    2

    15

    15

    10

    5

    5

    3

    10

    10

    5

    5

    5

    4

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    5

    1. видим, что в самом углу получился квадрат 2 на 2 (по количеству шагов внутреннего цикла), в котором все элементы равны 15; по сторонам этого квадрата стоят 4 элемента, равные 10, их количество равно удвоенной стороне квадрата
    2. в исходном варианте внутренний цикл выполняется 4 раза, поэтому угловой квадрат будет иметь размер 4 на 4; тогда 8 элементов, граничащих с его сторонами, будут равны 10
    3. таким образом, правильный ответ – 1.

    Задачи для тренировки:

    1. Значения двух массивов A[1..100] и B[1..100] задаются с помощью следующего фрагмента программы:

    for n:=1 to 100 do

        A[n] := n — 10;

    for n:=1 to 100 do

        B[n] := A[n]*n;

    Сколько элементов массива B будут иметь положительные значения?

    1) 10        2) 50        3) 90        4) 100

    1. Все элементы двумерного массива A размером 10х10 элементов первоначально были равны 0. Затем значения элементов меняются с помощью вложенного оператора цикла в представленном фрагменте программы:

    for n:=1 to 4 do

      for k:=n to 4 do begin

        A[n,k] := A[n,k] + 1;

        A[k,n] := A[k,n] + 1;

      end;

    Сколько элементов массива в результате будут равны 1?

    1) 0        2) 16        3) 12        4) 4

    1. Значения двумерного массива задаются с помощью вложенного оператора цикла в представленном фрагменте программы:

    for n:=1 to 5 do

      for k:=1 to 5 do

        B[n,k] := n + k;

    Чему будет равно значение B[2,4]?

    1) 9        2) 8        3) 7        4) 6

    1. Дан фрагмент:

    for n:=l to 6 do

      for m:=l to 5 do begin

        C[n,m]:=C[n,m]+(2*n-m);

      end;

    Чему будет равно значение С[4,3], если перед этими командами значение С[4,3]=10?

    1) 5        2) 10        3) 15        4) 25

    1. Значения элементов двух массивов А и В размером 1 х 100 задаются с помощью следующего фрагмента программы:

    for i:=1 tо 100 do

      A[i] := 50 – i;

    for i:=1 tо 100 do

      B[i] := A[i] + 49;

    Сколько элементов массива В будут иметь отрицательные значения?

    1) 1        2) 10        3) 50        4) 100

    1. Значения элементов двумерного массива А были равны 0. Затем значения некоторых элементов были изменены (см. представленный фрагмент программы):

    n := 0;

    for i:=1 tо 5 do

      for j:=1 tо 6-i do begin

        n := n + 1;

        A[i,j] := n;

      end;

    Какой элемент массива будет иметь в результате максимальное значение?

    1) A[1,1]        2) A[1,5]        3) A[5,1]        4) A[5,5]

    1. Значения элементов двумерного массива А размером 5×5 задаются с помощью вложенного цикла в представленном фрагменте программы:

    for i:=1 tо 5 do

      for j:=1 tо 5 do begin

        A[i,j] := i*j;

      end;

    Сколько элементов массива будут иметь значения больше 10?

    1) 12        2) 8        3) 10        4) 4

    1. Значения элементов двумерного массива А размером 5×5 задаются с помощью вложенного цикла в представленном фрагменте программы:

    for i:=1 tо 5 do

      for j:=1 tо 5 do begin

        A[i,j] := i + j;

      end;

    Сколько элементов массива будут иметь значения больше 5?

    1) 5        2) 20        3) 10        4) 15

    1. Дан фрагмент программы:

    for n:=1 tо 5 do

      for m:=1 tо 5 do

        C[n,m] := (m – n)*(m – n);

    Сколько элементов массива С будут равны 1?

    1) 5        2) 2        3) 8        4) 14

    1. В программе описан одномерный целочисленный массив с индексами от 0 до 10. В приведенном ниже фрагменте программы массив сначала заполняется, а потом изменяется:

    for i:=0 to 10 do

      A[i]:= i + 1;

    for i:=1 to 10 do

      A[i]:= A[i-1];

    Как изменяются элементы этого массива?

            1) все элементы, кроме последнего, сдвигаются на 1 элемент вправо

            2) все элементы, кроме первого, сдвигаются на 1 элемент влево

            3) все элементы окажутся равны 1

            4) все элементы окажутся равны своим индексам

    1. В программе описан одномерный целочисленный массив с индексами от 0 до 10. В приведенном ниже фрагменте программы массив сначала заполняется, а потом изменяется:

    for i:=0 to 10 do

      A[i]:= i + 1;

    for i:=10 downto 0 do

      A[i]:= A[10-i];

    Чему будут равны элементы этого массива?

            1) 10 9 8 7 6 5 4 3 2 1 0

            2) 11 10 9 8 7 6 5 4 3 2 1

            3) 11 10 9 8 7 6 7 8 9 10 11

            4) 1 2 3 4 5 6 5 4 3 2 1

    1. В программе описан одномерный целочисленный массив с индексами от 0 до 10. В приведенном ниже фрагменте программы массив сначала заполняется, а потом изменяется:

    for i:=0 to 10 do

      A[i]:= i + 1;

    for i:=0 to 10 do

      A[i]:= A[10-i];

    Чему будут равны элементы этого массива?

            1) 10 9 8 7 6 5 4 3 2 1 0

            2) 11 10 9 8 7 6 5 4 3 2 1

            3) 11 10 9 8 7 6 7 8 9 10 11

            4) 10 9 8 7 6 5 6 7 8 9 10

    1. В программе описан одномерный целочисленный массив с индексами от 0 до 10. В приведенном ниже фрагменте программы массив сначала заполняется, а потом изменяется:

    for i:=0 to 10 do

      A[i]:= i — 1;

    for i:=1 to 10 do

      A[i-1]:= A[i];

    A[10] := 10;

    Как изменяются элементы этого массива?

            1) все элементы, кроме последнего, окажутся равны между собой

            2) все элементы окажутся равны своим индексам

            3) все элементы, кроме последнего, сдвигаются на один элемент вправо

            4) все элементы, кроме последнего, уменьшаются на единицу

    1. В программе описан одномерный целочисленный массив с индексами от 0 до 10. В приведенном ниже фрагменте программы массив сначала заполняется, а потом изменяется:

    for i:=0 to 10 do

      A[i]:= i;

    for i:=1 to 11 do

      A[i-1]:= A[11-i];

    Чему будут равны элементы этого массива?

            1) 10 9 8 7 6 5 4 3 2 1 0

            2) 11 10 9 8 7 6 5 4 3 2 1

            3) 10 9 8 7 6 5 6 7 8 9 10

            4) 11 10 9 8 7 6 7 8 9 10 11

    1. В программе описан одномерный целочисленный массив с индексами от 0 до 10. В приведенном ниже фрагменте программы массив сначала заполняется, а потом изменяется:

      for i:=0 to 10 do A[i]:=i;

      for i:=0 to 10 do begin

        A[10-i]:=A[i];

        A[i]:=A[10-i];

      end;

    Чему будут равны элементы этого массива?

            1) 10 9 8 7 6 5 4 3 2 1 0

            2) 0 1 2 3 4 5 6 7 8 9 10

            3) 10 9 8 7 6 5 6 7 8 9 10

            4) 0 1 2 3 4 5 4 3 2 1 0

    1. Элементы двухмерного массива A размером N×N первоначально были равны 1000. Затем значения некоторых из них меняют с помощью следующего фрагмента программы:

      k := 0;

      for i:=1 to N do

        for j:=N-i+1 to N do begin

          k:= k + 1;

          A[i,j]:= k;

        end;

    Какой элемент массива в результате будет иметь минимальное значение?

            1) A[1,1]        2) A[1,N]        3) A[N,1]        4) A[N,N]

    1. Элементы двухмерного массива A размером 9×9 задаются с помощью следующего фрагмента программы:

      for n:=1 to 9 do

        for k:=1 to 9 do

          A[n,k]:=n+k+1;

    Сколько элементов массива A будут принимать четные значения?

            1) 36        2) 40        3) 41        4) 45

    1. Значения элементов двух массивов A[1..100] и B[1..100] задаются с помощью следующего фрагмента программы:

      for n:=1 to 100 do

        A[n] := n – 50;

      for n:=1 to 100 do

        B[101-n]:=A[n]*A[n];

    Какой элемент массива B будет наименьшим?

            1) B[1]        2) B[50]        3) B[51]        4) B[100]

    1. В программе описан одномерный целочисленный массив с индексами от 0 до 10 и целочисленные переменные k, i. В приведенном ниже фрагменте программы массив сначала заполняется, а потом изменяется:

      for i:=0 to 10 do A[i]:=i;

      for i:=10 downto 0 do begin

        k:=A[10-i];

        A[10-i]:=A[i];

        A[i]:=k;

      end;

    Чему будут равны элементы этого массива?

            1) 10 9 8 7 6 5 4 3 2 1 0

            2) 0 1 2 3 4 5 6 7 8 9 10

            3) 10 9 8 7 6 5 6 7 8 9 10

            4) 0 1 2 3 4 5 4 3 2 1 0

    1. Элементы двухмерного массива A размером 4×4 первоначально были равны 0.  Затем они изменяются с помощью следующего фрагмента программы:

      for n:=1 to 4 do

        for k:=n to 4 do

          A[n,k]:=1;

    Сколько элементов массива A будут равны 1?

            1) 4        2) 8        3) 10        4) 16

    1. Элементы двухмерного массива A размером 10×10 первоначально были равны 1. Затем значения некоторых из них меняют с помощью следующего фрагмента программы:

      for n:=1 to 4 do

        for k:=1 to n+1 do begin

          A[n,k]:=A[n,k]-1;

          A[n,k+1]:=A[n,k]-1;

        end;

    Сколько элементов массива в результате будут равны 0?

            1) 0        2) 4        3) 8        4) 16

    1. Дан фрагмент программы, обрабатывающий массив А из 10 элементов:

    n := 10;

    for i:=1 tо n do A[i] := i;

    j := 1;

    for i:=1 tо n-1 do

      if A[i] < A[i+1] then j := j + 1;

    Чему будет равно значение переменной j после выполнения этого алгоритма?

    1) 1        2) 2        3) 10        4) 11

    1. Значения элементов двухмерного массива A[1..100,1..100] задаются с помощью следующего фрагмента программы:

    for i:=1 to 100 do

    for k:=1 to 100 do

    if i = k then

         A[i,k] := 1

    else A[i,k] := -1;

    Чему равна сумма элементов массива после выполнения этого фрагмента программы?

            1) 0        2) –9800        3) –9900        4) –10000

    1. Значения элементов двухмерного массива A[1..100,1..100] задаются с помощью следующего фрагмента программы:

    for i:=1 to 100 do

    for k:=1 to 100 do

    if i > k then

         A[i,k] := 1

    else A[i,k] := -1;

    Чему равна сумма элементов массива после выполнения этого фрагмента программы?

            1) 0        2) 100        3) -100        4) -200

    1. Значения элементов двухмерного массива A[1..100,1..100] задаются с помощью следующего фрагмента программы:

    for i:=1 to 100 do

    for k:=1 to 100 do

    if i > k then

         A[i,k] := i

    else A[i,k] := -k;

    Чему равна сумма элементов массива после выполнения этого фрагмента программы?

            1) 5000        2) 0        3) -5000        4) -5050

    1. Дан фрагмент программы, обрабатывающий массив А из 10 элементов:

    j := 1;

    for i:=1 tо 10 do

      if A[i] = A[j] then j := i;

    s := j;

    Чему будет равно значение переменной s после выполнения этого алгоритма?

    1) 1        

    2) 10        

    3) индексу элемента, равного первому, и имеющему наибольший индекс        

    4) индексу элемента, равного последнему, и имеющему наименьший индекс

    1. Значения элементов двухмерного массива A[1..10,1..10] сначала равны 4. Затем выполняется следующий фрагмент программы:

    for i:=1 to 6 do

      for j:=1 to 5 do begin

        A[i,j]:=A[i,j]+6;

        A[j,i]:=A[j,i]+6;

      end;

    Сколько элементов массива будут равны 10?

            1) 30        2) 25        3) 10        4) 0

    1. Значения элементов двухмерного массива A[1..10,1..10] сначала равны 4. Затем выполняется следующий фрагмент программы:

    for i:=1 to 4 do

      for j:=1 to 5 do begin

        A[i,j]:=A[i,j]+4;

        A[j,i]:=A[j,i]+5;

      end;

    Сколько элементов массива будут равны 9?

            1) 20        2) 16        3) 5        4) 4

    1. Значения элементов двухмерного массива A[1..10,1..10] сначала равны 0. Затем выполняется следующий фрагмент программы:

    for i:=1 to 4 do

      for j:=2 to 5 do begin

        A[i,j]:=A[i,j]+4;

        A[j,i]:=A[j,i]+5;

      end;

    Сколько элементов массива будут равны 9?

            1) 20        2) 16        3) 9        4) 4

    1. В программе описан одномерный целочисленный массив с индексами от 0 до 10 и целочисленные переменные k, i. В приведенном ниже фрагменте программы массив сначала заполняется, а потом изменяется:

      for i:=0 to 10 do A[i]:=i;

      for i:=0 to 4 do begin

        k:=A[i];

        A[i]:=A[10-i];

        A[10-i]:=k;

      end;

    Чему будут равны элементы этого массива?

            1) 10 9 8 7 6 5 4 3 2 1 0

            2) 0 1 2 3 4 5 6 7 8 9 10

            3) 0 1 2 3 4 5 4 3 2 1 0

            4) 10 9 8 7 6 5 6 7 8 9 10

    1. В программе описан одномерный целочисленный массив с индексами от 0 до 10 и целочисленные переменные k, i. В приведенном ниже фрагменте программы массив сначала заполняется, а потом изменяется:

      for i:=0 to 10 do A[i]:=i;

      for i:=0 to 10 do begin

        k:=A[i];

        A[i]:=A[10-i];

        k:=A[10-i];

      end;

    Чему будут равны элементы этого массива?

            1) 10 9 8 7 6 5 4 3 2 1 0

            2) 0 1 2 3 4 5 6 7 8 9 10

            3) 0 1 2 3 4 5 4 3 2 1 0

            4) 10 9 8 7 6 5 6 7 8 9 10

    1. В программе описан одномерный целочисленный массив с индексами от 0 до 10 и целочисленные переменные k, i. В приведенном ниже фрагменте программы массив сначала заполняется, а потом изменяется:

      for i:=0 to 10 do A[i]:=i;

      for i:=0 to 4 do begin

        k:=A[10-i];

        A[10-i]:=A[i];

        k:=A[i];

      end;

    Чему будут равны элементы этого массива?

            1) 10 9 8 7 6 5 4 3 2 1 0

            2) 0 1 2 3 4 5 6 7 8 9 10

            3) 0 1 2 3 4 5 4 3 2 1 0

            4) 10 9 8 7 6 5 6 7 8 9 10

    1. В программе описан одномерный целочисленный массив с индексами от 0 до 10 и целочисленная переменная i. В приведенном ниже фрагменте программы массив сначала заполняется, а потом изменяется:

      for i:=0 to 10 do A[i]:=i;

      for i:=0 to 9 do begin

        A[i]:=A[i+1];

      end;

    Чему будут равны элементы этого массива?

            1) 10 0 1 2 3 4 5 6 7 8 9

            2) 1 2 3 4 5 6 7 8 9 10 10

            3) 0 0 1 2 3 4 5 6 7 8 9

            4) 1 2 3 4 5 6 7 8 9 10  0

    1. В программе описан одномерный целочисленный массив с индексами от 0 до 10 и целочисленные переменные k, i. В приведенном ниже фрагменте программы массив сначала заполняется, а потом изменяется:

      for i:=0 to 10 do A[i]:=i;

      k:=A[10];

      for i:=0 to 9 do

        A[i]:=A[i+1];

      A[0]:=k;

    Чему будут равны элементы этого массива?

            1) 10 0 1 2 3 4 5 6 7 8 9

            2) 10 2 3 4 5 6 7 8 9 10 10

            3) 1 2 3 4 5 6 7 8 9 10 10

            4) 1 2 3 4 5 6 7 8 9 10  0

    1. В программе описан одномерный целочисленный массив с индексами от 0 до 10 и целочисленные переменные k, i. В приведенном ниже фрагменте программы массив сначала заполняется, а потом изменяется:

      for i:=0 to 10 do A[i]:=i;

      for i:=0 to 4 do begin

        k:=A[2*i];

        A[2*i]:=A[2*i+1];

        A[2*i+1]:=k;

      end;

    Чему будут равны элементы этого массива?

            1) 5 6 7 8 9 0 1 2 3 4  10

            2) 10 9 8 7 6 5 4 3 2 1 0

            3) 0 1 2 3 4 5 4 3 2 1 0

            4) 1 0 3 2 5 4 7 6 9 8 10

    1. В программе описан одномерный целочисленный массив с индексами от 0 до 10 и целочисленные переменные k, i. В приведенном ниже фрагменте программы массив сначала заполняется, а потом изменяется:

      for i:=0 to 10 do A[i]:=i;

      for i:=0 to 4 do begin

        k:=A[i];

        A[i]:=A[i+5];

        A[i+5]:=k;

      end;

    Чему будут равны элементы этого массива?

            1) 5 6 7 8 9 0 1 2 3 4  10

            2) 10 9 8 7 6 5 4 3 2 1 0

            3) 0 1 2 3 4 5 4 3 2 1 0

            4) 1 0 3 2 5 4 7 6 9 8 10

    1. В программе описан одномерный целочисленный массив с индексами от 0 до 10 и целочисленные переменные k, i. В приведенном ниже фрагменте программы массив сначала заполняется, а потом изменяется:

      for i:=0 to 10 do A[10-i]:=i;

      k:=A[9];

      for i:=0 to 9 do

        A[10-i]:=A[9-i];

      A[1]:=k;

    Чему будут равны элементы этого массива?

            1) 9 8 7 6 5 4 3 2 1 0 10

            2) 10 1 9 8 7 6 5 4 3 2 1

            3) 0 10 9 8 7 6 5 4 3 2 1

            4) 10 0 9 8 7 6 5 4 3 2 1

    1. В программе описан одномерный целочисленный массив с индексами от 0 до 10 и целочисленная переменная i. В приведенном ниже фрагменте программы массив сначала заполняется, а потом изменяется:

      for i:=0 to 10 do A[i]:=i+1;

      for i:=1 to 10 do

        A[i]:=A[i-1];

    Чему будут равны элементы этого массива?

            1) 1 1 2 3 4 5 6 7 8 9 10

            2) 1 2 3 4 5 6 7 8 9 10 10

            3) 1 1 1 1 1 1 1 1 1 1 1

            4) 0 1 2 3 4 5 6 7 8 9 10

    1. В программе описан одномерный целочисленный массив с индексами от 0 до 9 и целочисленные переменные k и i. В приведенном ниже фрагменте программы массив сначала заполняется, а потом изменяется:

      for i:=0 to 9 do A[i]:=i+1;

      k:=A[9];

      for i:=9 downto 1 do

        A[i]:=A[i-1];

      A[0]:=k;

    Чему будут равны элементы этого массива?

            1) 10 3 4 5 6 7 8 9 10 10

            2) 10 1 2 3 4 5 6 7 8 9

            3) 10 1 1 1 1 1 1 1 1 1

            4) 10 10 10 10 10 10 10 10 10 10

    1. В программе описан одномерный целочисленный массив A с индексами от 0 до 10. Ниже представлен фрагмент этой программы, в котором значения элементов массива сначала задаются, а затем меняются.

      for i:=0 to 10 do

        A[i]:=i-1;

      for i:=10 downto 1 do

        A[i-1]:=A[i];

    Чему будут равны элементы этого массива?

            1) 9 9 9 9 9 9 9 9 9 9 9

            2) 0 1 2 3 4 5 6 7 8 9 9

            3) 0 1 2 3 4 5 6 7 8 9 10

            4) -1 -1 0 1 2 3 4 5 6 7 8

    1. В программе описан одномерный целочисленный массив A с индексами от 0 до 10. Ниже представлен фрагмент этой программы, в котором значения элементов массива сначала задаются, а затем меняются.

      for i:=0 to 10 do

        A[i]:=i;

      for i:=0 to 5 do begin

        A[10-i]:=A[9-i];

        A[i]:=A[i+1];

      end;

    Чему будут равны элементы этого массива?

            1) 0 1 2 3 4 5 6 7 8 9 10

            2) 0 1 2 3 4 5 6 7 8 9 9

            3) 1 2 3 4 5 5 5 6 7 8 9

            4) 1 2 3 4 5 6 5 4 3 2 1

    1. В программе обрабатывается двумерный целочисленный массив A [0..n,0..n]. Первый индекс элемента обозначает номер строки, а второй – номер столбца. Дан фрагмент программы:

      for i:=0 to n do begin

        c:=A[i,n-i];

        A[i,n-i]:=A[1,i];

        A[1,i]:=c;

      end;

    Что меняет этот фрагмент программы?

            1) два столбца в таблице

            2) строку и столбец в таблице

            3) элементы диагонали и строки в таблице

            4) элементы диагонали и столбца в таблице

    1. В программе описан одномерный целочисленный массив A с индексами от 0 до 10. Ниже представлен фрагмент этой программы, в котором значения элементов массива сначала задаются, а затем меняются.

      for i:=0 to 10 do

        A[i]:=i;

      for i:=0 to 5 do begin

        A[5-i]:=A[5+i];

        A[2+i]:=A[10-i];

      end;

    Чему будут равны элементы этого массива?

            1) 10 9 8 7 8 7 6 7 8 9 10

            2) 9 8 7 6 5 9 8 7 6 5 10

            3) 10 9 8 7 6 10 9 8 7 6 10

            4) 10 9 8 7 6 5 6 7 8 9 10

    1. В программе описан двухмерный целочисленный массив A [1..6,1..6]. Ниже представлен фрагмент этой программы, в котором изменяются значения элементов массива.

      for n:=1 to 6 do

      for m:=1 to 6 do

        A[n,m]:=A[m,n]+2*n-m;

    До выполнения данного фрагмента программы значение A[4,3] было равно 10, а значение A[3,4] было равно 15. Чему будет равно значение A[4,3] после выполнения этого фрагмента программы?

            1) 10        2) 15        3) 17        4) 20

    1. В программе описан одномерный целочисленный массив A с индексами от 0 до 10. Ниже представлен фрагмент этой программы, в котором значения элементов массива сначала задаются, а затем меняются.

      for i:=0 to 10 do

        A[i]:=10-i;

      for i:=0 to 5 do begin

        A[10-i]:=A[5-i];

        A[5+i]:=A[i];

      end;

    Чему будут равны элементы этого массива?

            1) 9 8 7 6 5 10 9 8 7 6 10

            2) 10 9 8 7 6 5 6 7 8 9 10

            3) 10 9 8 7 6 10 9 8 7 6 10

            4) 5 6 7 8 9 10 9 8 7 6 5

    1. В программе описан одномерный целочисленный массив с индексами от 0 до n. Известно, что в массиве есть несколько элементов с максимальным значением. Дан фрагмент программы:

    j:=1;

    for i:=1 to n do

      if A[i] > A[j] then j:= i;

    s:=j;

    Чему будет равно значение переменной s после выполнения этого фрагмента программы:

            1) значению максимального элемента

            2) количеству элементов в массиве A, имеющих максимальное значение

            3) индексу первого элемента в массиве A, имеющего максимальное значение

            4) индексу последнего элемента в массиве A, имеющего максимальное значение

    1. Дан фрагмент программы, обрабатывающий двухмерный массив A размером n×n.

    for i:=1 to n-1 do

      for j:=i to n do

      if A[i,1] < A[j,1] then begin

        k:=A[i,1];

        A[i,1]:=A[j,1];

        A[j,1]:=k;

      end;

    В этом фрагменте:

            1) упорядочивается первая строка массива по убыванию

            2) упорядочивается первый столбец массива по убыванию

            3) заменяются элементы k-ого столбца таблицы

            4) заменяются элементы k-ой        строки таблицы

    1. Значения двух массивов A и B с индексами от 1 до 100 задаются при помощи следующего фрагмента программы:

    for i:=1 to n do

      A[i]:=i*i;

    for i:=1 to n do

      B[i]:=A[i]-100;

    Сколько положительных значений будет в  массиве B?

            1) 0        2) 10        3) 90        4) 91

    1. Значения двух массивов A и B с индексами от 1 до 100 задаются при помощи следующего фрагмента программы:

    for i:=1 to n do

      A[i]:=(i-75)*(i-75);

    for i:=1 to n do

      B[101-i]:=A[i];

    Какой элемент массива B будет наибольшим?

            1) B[1]        2) B[26]        3) B[75]        4) B[100]

    1. Значения двухмерного массив A размером 9×9 задаются при помощи следующего фрагмента программы:

    for n:=1 to 9 do

      for k:=1 to 9 do

        A[n,k]:=n+k+1;

    Сколько четных значений будет в  массиве A?

            1) 36        2) 40        3) 41        4) 45

    1. В программе описан одномерный целочисленный массив A с индексами от 0 до 10. Ниже представлен фрагмент этой программы, в котором значения элементов массива сначала задаются, а затем меняются.

      for i:=0 to 10 do

        A[i]:=2+i;

      for i:=0 to 4 do begin

        A[i]:=A[10-i]-1;

        A[10-i]:=A[i]+3;

      end;

    Чему будут равны элементы этого массива?

            1) 11 10 9 8 7 5 6 7 8 9

            2) 11 10 9 8 7 7 5 6 7 8 9

            3) 11 10 9 8 7 7 10 11 12 13 14

            4) 11 10 9 8 7 10 11 12 13 14

    1. В программе описан одномерный целочисленный массив A с индексами от 0 до 10. Ниже представлен фрагмент этой программы, в котором значения элементов массива сначала задаются, а затем меняются.

      for i:=0 to 10 do

        A[i]:=2+i;

      for i:=0 to 4 do begin

        A[10-i]:=2*A[10-i];

        A[i]:=A[i+1]+4;

      end;

    Чему будут равны элементы этого массива?

            1) 7 8 9 10 11 7 16 18 20 22 24

            2) 7 8 9 10 11 16 18 20 22 24

            3) 2 3 4 5 6 7 16 18 20 22 24

            4) 3 4 5 6 7 7 16 18 20 22 24

    1. В программе описан одномерный целочисленный массив A с индексами от 0 до 10. Ниже представлен фрагмент этой программы, в котором значения элементов массива сначала задаются, а затем меняются.

      for i:=0 to 10 do

        A[i]:=2*i;

      for i:=0 to 4 do begin

        A[10-i]:=A[i]-1;

        A[i]:=A[10-i]-1;

      end;

    Чему будут равны элементы этого массива?

            1) 0 2 4 6 8 10 12 14 16 18 20

            2) 19 17 15 13 11 10 -1 1 3 5 7

            3) -2 0 2 4 6 10 7 5 3 1 -1

            4) -1 1 3 5 7 9 11 13 15 17 19

    1. В программе описан одномерный целочисленный массив A с индексами от 0 до 10. Ниже представлен фрагмент этой программы, в котором значения элементов массива сначала задаются, а затем меняются.

      A[0]:=1;

      for i:=1 to 10 do

        A[i]:=2+A[i-1];

      for i:=0 to 5 do

        A[10-i]:=A[i]-1;

    Чему будут равны элементы этого массива?

            1) 1 3 5 7 9 10 8 6 4 2 0

            2) 1 3 5 7 9 11 13 15 17 19 21

            3) 1 3 5 7 9 11 9 7 5 3 1

            4) 1 3 5 7 9 11 8 6 4 2 0

    1. В программе описан одномерный целочисленный массив A с индексами от 0 до 10. Ниже представлен фрагмент этой программы, в котором значения элементов массива сначала задаются, а затем меняются.

      for i:=0 to 10 do

        A[i]:=i;

      t:=A[0];

      for i:=1 to 10 do

        A[i-1]:=A[i];

      A[10]:=t;

    Чему будут равны элементы этого массива?

            1) 10 10 10 10 10 10 10 10 10 10

            2) 1 2 3 4 5 6 7 8 9 10 0

            3) 0 0 0 0 0 0 0 0 0 0

            4) 1 2 3 4 5 6 7 8 9 10 1

    1. В программе описан одномерный целочисленный массив A с индексами от 0 до 10. Ниже представлен фрагмент этой программы, в котором значения элементов массива сначала задаются, а затем меняются.

      for i:=0 to 10 do

        A[i]:=i+3;

      for i:=10 downto 0 do begin

        k:=A[i];

        A[i]:=A[10-i];

        A[10-i]:=k;

      end;

    Чему будут равны элементы этого массива?

            1) 13 12 11 109 8 7 6 5 4 3

            2) 3 4 5 6 7 8 9 10 11 12 13

            3) 13 12 11 10 9 8 9 10 11 12 13

            4) 3 4 5 6 7 8 7 6 5 4 3

    1. Дан фрагмент программы, обрабатывающей двухмерный массив A[1..5,1..4]:

    k:=4;

    for m:=1 to 4 do begin

      k:=k+1;

      for n:=1 to 5 do begin

        k:=m-k;

        A[n,m]:=n*n+m*m-2*k;

      end;

    end;

    Чему будет равно значение A[3,1]?

            1) 18        2) 19        3) 20        4) 21

    1. В программе описан одномерный целочисленный массив A с индексами от 1 до 10. Ниже представлен фрагмент этой программы, в котором значения элементов массива сначала задаются, а затем меняются.

      for i:=1 to 10 do

        A[i]:=2*i;

     for i:=1 to 10 do begin

        k:=2*A[i]+3;

        A[10-i+1]:=k;

      end;

    Чему будут равны элементы этого массива?

            1) 7 11 15 19 23 27 31 35 39 43

            2) 17 25 33 41 49 23 19 15 11 7

            3) 5 9 13 17 21 25 29 33 37 41

            4) 43 39 35 31 27 23 19 15 11 7

    1. В программе описан одномерный целочисленный массив A с индексами от 1 до 10. Ниже представлен фрагмент этой программы, в котором значения элементов массива сначала задаются, а затем меняются.

      for i:=1 to 10 do

        A[i]:=5*i;

     for i:=1 to 10 do begin

        k:=A[i]-2;

        A[10-i+1]:=k;

      end;

    Чему будут равны элементы этого массива?

            1) 1 6 11 16 21 23 18 13 8 3

            2) 3 8 13 18 23 28 33 38 43 48

            3) 48 43 38 33 28 23 18 13 8 3

            4) 1 6 11 16 21 26 31 36 41 46

    1. В программе описан одномерный целочисленный массив A с индексами от 0 до 10. Ниже представлен фрагмент этой программы, в котором значения элементов массива сначала задаются, а затем меняются.

      for i:=0 to 10 do

        A[i]:=3*i;

     for i:=1 to 10 do

        A[i]:=A[i] mod 3;

    Чему будут равны элементы этого массива?

            1) Все элементы будут равны 3.

            2) Все элементы будут равны 1.

            3) Все элементы будут равны 0.

            4) Все элементы будут равны своим индексам.

    1. В программе описан одномерный целочисленный массив A с индексами от 0 до 10. Ниже представлен фрагмент этой программы, в котором значения элементов массива сначала задаются, а затем меняются.

    for i:=0 to 10 do

      A[i]:=i-1;

    for i:=1 to 10 do

      A[i-1]:=A[i];

    A[10]:=10;

    Как изменятся элементы этого массива после выполнения фрагмента программы?

    1) все элементы, кроме последнего, окажутся равны между собой

    2) все элементы окажутся равны своим индексам

    3) все элементы, кроме последнего, будут сдвинуты на один элемент вправо

    4) все элементы, кроме последнего, уменьшатся на единицу

    1. В программе описан одномерный целочисленный массив с индексами от 0 до 10. Ниже представлен фрагмент программы, обрабатывающей данный массив:

    s:=0;

    n:=10;

    for i:=1 to n do begin

      s:=s+A[i]-A[i-1];

    end;

    В начале выполнения этого фрагмента в массиве находились числа 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, т.е. А[0]=0, А[1]=2 и т.д. Чему будет равно значение переменной s после выполнения данной программы?

    1) 10        2) 20        3) 22        4) 110

    1. В программе описан одномерный целочисленный массив с индексами от 0 до 10. Ниже представлен фрагмент программы, обрабатывающей данный массив:

    s:= 0;

    n:= 10;

    for i:=0 to n do begin

      if і = n-i then s:=s+A[i]+A[i+1];

    end;

    В начале выполнения этого фрагмента в массиве находились числа 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, т. е. А[0]=0, А[1]=10 и т. д. Чему будет равно значение переменной s после выполнения данной программы?

    1) 0        2) 100        3) 110        4) 550

    1. В программе описан одномерный целочисленный массив с индексами от 0 до 10. Ниже представлен фрагмент программы, обрабатывающей данный массив:

    s:= 0;

    n:= 10;

    for i:=0 to n do begin

      if A[n-i]-A[і] > A[і] then

        s:=s+A[і];

    end;

    В начале выполнения этого фрагмента в массиве находились числа 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, т. е. А[0]=0, А[1]=10 и т. д. Чему будет равно значение переменной s после выполнения данной программы?

    1) 60        2) 100        3) 150        4) 550

    1. В программе описан одномерный целочисленный массив с индексами от 0 до 10. Ниже представлен фрагмент программы, обрабатывающей данный массив:

    s:= 0;

    n:= 10;

    for i:=0 to n do begin

      if A[n-i]-A[і] < A[і] then

        s:=s+A[і];

    end;

    В начале выполнения этого фрагмента в массиве находились числа 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, т. е. А[0]=0, А[1]=2 и т. д. Чему будет равно значение переменной s после выполнения данной программы?

            1) 44        2) 60        3) 78        4) 98

    1. В программе описан одномерный целочисленный массив с индексами от 1 до 10. Ниже представлен фрагмент программы, обрабатывающей данный массив:

    n:= 10;

    for i:= 1 to n do begin

      A[n+1-i]:= 2*A[i];

    end;

    В начале выполнения этого фрагмента в массиве находились числа 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, т. е. А[1]=1, А[2]=2 и т. д. Укажите значение, которое после выполнения указанного фрагмента программы имеют два или более элемента массива. Если таких чисел несколько, укажите наибольшее из них.

            1) 4        2) 8        3) 10        4) такого значения нет

    1. В программе описан одномерный целочисленный массив с индексами от 1 до 10. Ниже представлен фрагмент программы, обрабатывающей данный массив:

    n:=10;

    for i:=1 to n do begin

      s = A[n+1-i]*i;

      A[n+1-i]:= A[i]*i;

      A[i]:= s;

    end;

    Перед началом выполнения фрагмента все элементы массива равны 1. Укажите утверждение, которое будет верно после выполнения указанного фрагмента программы при изменении индекса от 1 до 10.

    1) значения массива возрастают

    2) значения массива убывают

    3) значения массива постоянны

    4) значения массива сначала возрастают, а потом убывают

    1. В программе описан одномерный целочисленный массив с индексами от 1 до 10. Ниже представлен фрагмент программы, обрабатывающей данный массив:

    n:=10;

    for i:=1 to n do begin

      s = A[n+1-i] + i;

      A[n+1-i]:= A[i] + i;

      A[i]:= s;

    end;

    Перед началом выполнения фрагмента все элементы массива равны 1. Укажите утверждение, которое будет верно после выполнения указанного фрагмента программы при изменении индекса от 1 до 10.

    1) значения массива возрастают

    2) значения массива сначала возрастают, а потом убывают

    3) значения массива убывают

    4) значения массива постоянны

    1. В программе описан одномерный целочисленный массив с индексами от 0 до 100. Ниже представлен фрагмент программы, обрабатывающей данный массив:

    n:= 100;

    for i:=0 to n do A[i]:=i;

    for i:=1 to n do begin

      A[i]:= A[i]-A[i-1];

    end;

    s:=A[90];

    Укажите значение, которое после выполнения указанного фрагмента программы будет записано в переменную s.

            1) 0        2) 30        3) 45        4) 550

    1. В программе описан одномерный целочисленный массив с индексами от 0 до 10. Ниже представлен фрагмент программы, обрабатывающей данный массив:

    n:= 10; s:= 0;

    for i:=1 to n do begin

      if A[i]-A[i-1] < i then

        s:= s + i;

    end;

    В начале выполнения этого фрагмента в массиве находились числа Фибоначчи: 1,1,2,3,5,8,13,21,34,55,89, т.е. A[0]=1, A[1]=1, A[2]=2 и т.д. Чему будет равно значение переменной s после выполнения данной программы?

            1) 0        2) 21        3) 34        4) 55

    1. В программе описан одномерный целочисленный массив с индексами от 1 до 10. Ниже представлен фрагмент программы, обрабатывающей данный массив:

    n := 10;

    for i := 1 to n do begin

     A[n+1-i] := 2*A[i];

    end;

    В начале выполнения этого фрагмента в массиве находились числа: 1,2,4,8,16,32,64,128,256,512, т.е. A[i]=2k-1, k=1, …10. Укажите значение из предложенного списка, которое после выполнения указанного фрагмента программы имеют два или более рассмотренных в этом фрагменте элемента массива. Если таких чисел несколько, укажите наименьшее из них.  

            1) такого значения нет        2) 2        3) 4        4) 8

    1. В программе описан одномерный целочисленный массив с индексами от 0 до 12. Ниже представлен фрагмент программы, обрабатывающей данный массив:

    s := 0;

    n := 12;

    for i:=0 to n do begin

      if A[n–i]–A[i] = A[i] then

        s:=s+2*A[i];

    end;

    В начале выполнения этого фрагмента в массиве находились числа 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, т. е. A[0] = 0, A[1] = 10 и т. д. Чему будет равно значение переменной s после выполнения данной программы?        

            1) 60        2) 80        3) 100        4) 780

    1. В программе описан одномерный целочисленный массив с индексами от 0 до 12. Ниже представлен фрагмент программы, обрабатывающей данный массив:

    s := 0;

    n := 12;

    for i:=0 to n do begin

      if A[n–i]–A[i] = A[i] then

        s:=s+3*A[i];

    end;

    В начале выполнения этого фрагмента в массиве находились числа 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24 т.е. A[0] = 0, A[1] = 2 и т. д. Чему будет равно значение переменной s после выполнения данной программы?        

            1) 12        2) 18        3) 24        4) 156


    [1] Здесь рассматривается только язык Паскаль, который является наиболее распространенным в школах России.

    [2] В этом примере используется стандартная нумерация для Паскаля: индексы начинаются с единицы.

    Понравилась статья? Поделить с друзьями:

    Новое и интересное на сайте:

  • Егэ по информатике fipi
  • Егэ по информатике 8094
  • Егэ по информатике 8 вопрос
  • Егэ по информатике 7 вариант ответы
  • Егэ по информатике 26 задание разбор excel

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии