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

    Задания на тему "Программа на обработку массива".


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

    Например, для исходного массива из шести элементов: 14 6 11 18 9 24

    программа должна вывести следующий массив 9 6 9 18 9 24

    # допускается также  
    # использовать две  
    # целочисленные переменные j и k 
    a = [] 
    n = 30 
    for i in range(0, n):   
      a.append(int(input()))
    ...
    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.
    #include <iostream> 
    using namespace std; 
    const int n = 30; 
    int main() {   
      long a[n];   
      long i, j, k;  
      for (i = 0; i < n; i++)   
        cin >>  a[i];   
      ...  
      return 0;
     }



    2) Дан целочисленный массив из 1000 элементов. Элементы массива могут принимать положительные значения до 10000 включительно. Опишите на одном из языков программирования алгоритм, который уменьшает все четные значения массива на одно и то же значение, при этом минимальный из них должен стать равным 2.

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

    Например, для массива из шести элементов: 37 86 57 14 45 58

    программа должна вывести числа 37 74 57 2 45 46

    # допускается также  
    # использовать две 
    # целочисленные переменные j и k
    a = [ ] 
    n = 1000
    for i in range(0, n): 
       a.append(int(input()))
    ...
    const     
    n = 1000; 
    var     
    a: array [1..n] of integer;    
    i, j, k: integer;
    begin  
       for i := 1 to n do    
          readln(a[i]);   
       ...  
    end.
    #include <iostream> 
    using namespace std;
    const int n = 1000;
    int main() {    
       int a[n];  
       int i, j, k;  
       for (i = 0; i < n; i++)   
          cin >>  a[i];  
       ...   
       return 0; 
    }



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

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

    программа должна вывести числа 4 2 7 2 25 106

    # допускается также  
    # использовать две 
    # целочисленные переменные j и k
    a = [ ] 
    n = 30 
    for i in range(0, n): 
       a.append(int(input()))
    ...
    const     
    N = 30; 
    var     
    a: array [1..N] of integer;    
    i, j, k: integer;
    begin  
       for i := 1 to N do    
          readln(a[i]);   
       ...  
    end.
    #include <iostream> 
    using namespace std;
    const int N = 30;
    int main() {    
       int a[N];  
       int i, j, k;  
       for (i = 0; i < N; i++)   
          cin >>  a[i];  
       ...   
       return 0; 
    }



    4) Дан целочисленный массив из 30 элементов. Элементы массива могут принимать целые значения от 0 до 1000. Опишите на русском языке или на одном из языков программирования алгоритм, позволяющий найти среднее арифметическое нечётных трехзначных чисел, записанных в этом массива. Если ни одного такого числа нет, нужно вывести -1.

    # допускается также  
    # использовать две 
    # целочисленные переменные j и s
    a = [ ] 
    n = 30 
    for i in range(0, n): 
       a.append(int(input()))
    ...
    const     
    N = 30; 
    var     
    a: array [1..N] of integer;    
    i, j, s: integer;
    begin  
       for i := 1 to N do    
          readln(a[i]);   
       ...  
    end.
    #include <iostream> 
    using namespace std;
    const int N = 30;
    int main() {    
       int a[N];  
       int i, j, s;  
       for (i = 0; i < N; i++)   
          cin >>  a[i];  
       ...   
       return 0; 
    }



    5) Дан массив, содержащий 101 неотрицательных целых чисел, не превышающих 10000. Опишите на одном из языков программирования алгоритм, позволяющий найти и вывести сумму всех содержащихся в массиве трёхзначных чисел, десятичная запись которых оканчивается на 7, но не на 77. Если подходящих чисел в массиве нет, программа должна вывести число –1.

    # допускается также  
    # использовать две 
    # целочисленные переменные j и s 
    a = [ ] 
    n = 101 
    for i in range(0, n): 
       a.append(int(input()))
    ...
    const     
    N = 101; 
    var     
    a: array [1..N] of integer;    
    i, j, s: integer;
    begin  
       for i := 1 to N do    
          readln(a[i]);   
       ...  
    end.
    #include <iostream> 
    using namespace std;
    const int N = 101;
    int main() {    
       int a[N];  
       int i, j, s;  
       for (i = 0; i < N; i++)   
          cin >>  a[i];  
       ...   
       return 0; 
    }



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

    Например, для массива из 6 элементов, содержащего числа 2, 5, 20, 15, 150, 100, программа должна выдать ответ 2 (элемент со значением 20 и со значением 150). Программа должна вывести общее количество подходящих элементов, значения элементов выводить не нужно.

    # допускается также  
    # использовать две 
    # целочисленные переменные j и k
    a = [ ] 
    n = 50
    for i in range(0, n): 
       a.append(int(input()))
    ...
    const     
    N = 50; 
    var     
    a: array [1..N] of integer;    
    i, j, k: integer;
    begin  
       for i := 1 to N do    
          readln(a[i]);   
       ...  
    end.
    #include <iostream> 
    using namespace std;
    const int N = 50;
    int main() {    
       int a[N];  
       int i, j, k;  
       for (i = 0; i < N; i++)   
          cin >>  a[i];  
       ...   
       return 0; 
    }



    7) Дан массив, содержащий 1000 положительных целых чисел. Симметричной парой называются два элемента, которые находятся на равном расстоянии от концов массива. Например, 1-й и 1000-й элементы, 2-й и 999-й и т. д. Порядок элементов в симметричной паре не учитывается: элементы на 1 и 2014 местах – это та же самая пара, что и элементы на 2014 и 1 местах.

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

    # допускается также  
    # использовать две 
    # целочисленные переменные j и k
    a = [ ] 
    n = 1000
    for i in range(0, n): 
       a.append(int(input()))
    ...
    const     
    N = 1000; 
    var     
    a: array [1..N] of integer;    
    i, j, k: integer;
    begin  
       for i := 1 to N do    
          readln(a[i]);   
       ...  
    end.
    #include <iostream> 
    using namespace std;
    const int N = 1000;
    int main() {    
       int a[N];  
       int i, j, k;  
       for (i = 0; i < N; i++)   
          cin >>  a[i];  
       ...   
       return 0; 
    }



    8) Дан массив, содержащий 2014 положительных целых чисел. Напишите на одном из языков программирования программу, которая находит в этом массиве количество локальных минимумов. Локальным минимумом называется элемент массива, который меньше всех своих соседей. Например, в массиве из 6 элементов, содержащем числа 4, 6, 12, 7, 3, 8, есть два локальных минимума: это элементы, равные 4 и 3. Программа должна вывести общее количество подходящих элементов.

    # допускается также  
    # использовать две 
    # целочисленные переменные j и k
    a = [ ] 
    n = 2014
    for i in range(0, n): 
       a.append(int(input()))
    ...
    const     
    N = 2014; 
    var     
    a: array [1..N] of integer;    
    i, j, k: integer;
    begin  
       for i := 1 to N do    
          readln(a[i]);   
       ...  
    end.
    #include <iostream> 
    using namespace std;
    const int N = 2014;
    int main() {    
       int a[N];  
       int i, j, k;  
       for (i = 0; i < N; i++)   
          cin >>  a[i];  
       ...   
       return 0; 
    }



    9) Дан целочисленный массив из 30 элементов. Элементы массива могут принимать целые значения от 0 до 1000 включительно. Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести количество пар соседних элементов массива, сумма которых не кратна 3, а произведение больше 600.

    # допускается также  
    # использовать две 
    # целочисленные переменные j и k
    a = [ ] 
    n = 30 
    for i in range(0, n): 
       a.append(int(input()))
    ...
    const     
    N = 30; 
    var     
    a: array [1..N] of integer;    
    i, j, k: integer;
    begin  
       for i := 1 to N do    
          readln(a[i]);   
       ...  
    end.
    #include <iostream> 
    using namespace std;
    const int N = 30;
    int main() {    
       int a[N];  
       int i, j, k;  
       for (i = 0; i < N; i++)   
          cin >>  a[i];  
       ...   
       return 0; 
    }



    10) Дан целочисленный массив из 2000 элементов. Если сумма всех элементов массива чётная, нужно вывести количество нечётных (по значению) элементов массива, если нечётная – количество чётных. Например, для массива из 6 элементов, равных соответственно 2, 6, 12, 17, 3, 8, ответом будет 2 – количество нечётных элементов, так как общая сумма всех элементов чётна.

    # допускается также  
    # использовать одну 
    # целочисленную переменную k
    a = [ ] 
    n = 2000 
    for i in range(0, n): 
       a.append(int(input()))
    ...
    const     
    N = 2000; 
    var     
    a: array [1..N] of integer;    
    i, k: integer;
    begin  
       for i := 1 to N do    
          readln(a[i]);   
       ...  
    end.
    #include <iostream> 
    using namespace std;
    const int N = 2000;
    int main() {    
       int a[N];  
       int i, k;  
       for (i = 0; i < N; i++)   
          cin >>  a[i];  
       ...   
       return 0; 
    }



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

    # допускается также  
    # использовать две 
    # целочисленные переменные j и k
    a = [ ] 
    n = 30 
    for i in range(0, n): 
       a.append(int(input()))
    ...
    const     
    N = 30; 
    var     
    a: array [1..N] of integer;    
    i, j, k: integer;
    begin  
       for i := 1 to N do    
          readln(a[i]);   
       ...  
    end.
    #include <iostream> 
    using namespace std;
    const int N = 30;
    int main() {    
       int a[N];  
       int i, j, k;  
       for (i = 0; i < N; i++)   
          cin >>  a[i];  
       ...   
       return 0; 
    }



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

    # допускается также  
    # использовать две 
    # целочисленные переменные j и k
    a = [ ] 
    n = 30 
    for i in range(0, n): 
       a.append(int(input()))
    ...
    const     
    N = 30; 
    var     
    a: array [1..N] of integer;    
    i, j, k: integer;
    begin  
       for i := 1 to N do    
          readln(a[i]);   
       ...  
    end.
    #include <iostream> 
    using namespace std;
    const int N = 30;
    int main() {    
       int a[N];  
       int i, j, k;  
       for (i = 0; i < N; i++)   
          cin >>  a[i];  
       ...   
       return 0; 
    }



    13) Дан целочисленный массив из 30 элементов. Элементы массива могут принимать целые значения от 0 до 10000 включительно. Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести наименьший из элементов массива, шестнадцатеричная запись которого содержит не менее трёх цифр и оканчивается на букву E. Если таких чисел нет, нужно вывести ответ 0.

    # допускается также  
    # использовать две 
    # целочисленные переменные j и k
    a = [ ] 
    n = 30 
    for i in range(0, n): 
       a.append(int(input()))
    ...
    const     
    N = 30; 
    var     
    a: array [1..N] of integer;    
    i, j, k: integer;
    begin  
       for i := 1 to N do    
          readln(a[i]);   
       ...  
    end.
    #include <iostream> 
    using namespace std;
    const int N = 30;
    int main() {    
       int a[N];  
       int i, j, k;  
       for (i = 0; i < N; i++)   
          cin >>  a[i];  
       ...   
       return 0; 
    }



    14) Дан целочисленный массив из 30 элементов. Элементы массива могут принимать целые значения от 0 до 10000 включительно. Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести минимальный элементов массива, двенадцатиричная запись которого содержит ровно две цифры, причём первая (старшая) цифра больше второй (младшей). Если таких чисел нет, нужно вывести ответ 0.

    # допускается также  
    # использовать две 
    # целочисленные переменные j и k
    a = [ ] 
    n = 30 
    for i in range(0, n): 
       a.append(int(input()))
    ...
    const     
    N = 30; 
    var     
    a: array [1..N] of integer;    
    i, j, k: integer;
    begin  
       for i := 1 to N do    
          readln(a[i]);   
       ...  
    end.
    #include <iostream> 
    using namespace std;
    const int N = 30;
    int main() {    
       long a[N];  
       long i, j, k;  
       for (i = 0; i < N; i++)   
          cin >>  a[i];  
       ...   
       return 0; 
    }



    15) Дан целочисленный массив из 30 элементов. Элементы массива могут принимать целые значения от 0 до 10000 включительно. Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести минимальный элементов массива, шестнадцатеричная запись которого содержит ровно две цифры, причём вторая (младшая) цифра – это буква (от A до F). Если таких чисел нет, нужно вывести ответ 0.

    # допускается также  
    # использовать две 
    # целочисленные переменные j и k
    a = [ ] 
    n = 30 
    for i in range(0, n): 
       a.append(int(input()))
    ...
    const     
    N = 30; 
    var     
    a: array [1..N] of integer;    
    i, j, k: integer;
    begin  
       for i := 1 to N do    
          readln(a[i]);   
       ...  
    end.
    #include <iostream> 
    using namespace std;
    const int N = 30;
    int main() {    
       int a[N];  
       int i, j, k;  
       for (i = 0; i < N; i++)   
          cin >>  a[i];  
       ...   
       return 0; 
    }



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

    Например, для исходного массива из шести элементов: 4 11 12 24 2 16

    программа должна вывести следующий массив 4 11 3 3 2 3

    # допускается также  
    # использовать две 
    # целочисленные переменные j и k
    a = [ ] 
    n = 30 
    for i in range(0, n): 
       a.append(int(input()))
    ...
    const     
    N = 30; 
    var     
    a: array [1..N] of integer;    
    i, j, k: integer;
    begin  
       for i := 1 to N do    
          readln(a[i]);   
       ...  
    end.
    #include <iostream> 
    using namespace std;
    const int N = 30;
    int main() {    
       int a[N];  
       int i, j, k;  
       for (i = 0; i < N; i++)   
          cin >>  a[i];  
       ...   
       return 0; 
    }



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

    Например, для исходного массива из шести элементов: 204 115 27 20 305 4

    программа должна вывести следующий массив 204 135 27 135 305 4

    # допускается также  
    # использовать две 
    # целочисленные переменные j и k
    a = [ ] 
    n = 30 
    for i in range(0, n): 
       a.append(int(input()))
    ...
    const     
    N = 30; 
    var     
    a: array [1..N] of integer;    
    i, j, k: integer;
    begin  
       for i := 1 to N do    
          readln(a[i]);   
       ...  
    end.
    #include <iostream> 
    using namespace std;
    const int N = 30;
    int main() {    
       int a[N];  
       int i, j, k;  
       for (i = 0; i < N; i++)   
          cin >>  a[i];  
       ...   
       return 0; 
    }



    Задания взяты из базы данных ФИПИ, сайта К.Полякова или придуманы мною