Содержание
ВНИМАНИЕ | Для получения программы своего варианта пишите на наш электронный адрес proglabs@mail.ru |
Уровень А
Постановка задания
Требуется определить массив целых чисел (например, размера 30), заполнить его случайными числами или ввести его элементы с клавиатуры и определить его характеристики с помощью рекурсивной функции в соответствии с вариантом задания. Проверку правильности результата провести с помощью сравнения результатов итеративной и рекурсивной функций.
Программа должна содержать следующие функции:
- инициализация элементов массива случайными числами или вводимыми с клавиатуры;
- вывод массива на экран;
- итеративная функция, вычисляющая характеристики массива в соответствии с вариантом задания;
- рекурсивная функция, вычисляющая характеристики массива в соответствии с вариантом задания.
Варианты заданий
№ | Формулировка |
А1 | В массиве целых чисел с помощью рекурсивной функции найти количество четных элементов. |
А2 | В массиве целых чисел с помощью рекурсивной функции найти количество элементов массива, которые делятся на 5 и не делятся на 7. |
А3 | В массиве целых чисел с помощью рекурсивной функции найти количество простых чисел. |
А4 | В массиве целых чисел с помощью рекурсивной функции найти сумму нечетных элементов. |
А5 | Найти максимальный элемент целочисленного массива с помощью рекурсии. |
А6 | Вычислить сумму только симметричных элементов массива с помощью рекурсии. |
А7 | В массиве целых чисел с помощью рекурсивной функции найти сумму таких элементов, которые состоят только из четных цифр. |
А8 | В массиве целых чисел с помощью рекурсивной функции найти количество элементов, больших заданного числа А. |
А9 | В массиве целых чисел с помощью рекурсии найти количество минимальных элементов. |
А10 | В массиве целых чисел с помощью рекурсии найти сумму элементов массива, расположенных в интервале (А, В). |
А11 | Найти количество двузначных элементов массива с помощью рекурсии. |
А12 | Найти минимальный элемент целочисленного массива с помощью рекурсии. |
А13 | В массиве целых чисел с помощью рекурсии найти количество максимальных элементов. |
А14 | Вычислить сумму только двузначных элементов массива с помощью рекурсии. |
А15 | В массиве целых чисел с помощью рекурсивной функции найти сумму элементов, заканчивающихся на 7. |
А16 | В массиве целых чисел с помощью рекурсивной функции найти сумму всех элементов массива, которые одновременно делятся на 3 и на 5. |
А17 | В массиве целых чисел с помощью рекурсивной функции найти количество элементов, начинающихся на 3. |
Уровень В
Постановка задания
Метод «Разделяй и властвуй»
Требуется определить одномерный целочисленный массив а из n элементов (например, $n = 30$), заполнить его случайными числами (в диапазоне от А до В, где А и В задаются в директивах #define) или ввести его элементы с клавиатуры и определить следующие его характеристики с помощью метода «разделяй и властвуй»:
- количество элементов массива, обладающих свойством Q;
- сумму элементов массива, обладающих свойством Т;
- обладает ли хотя бы один элемент массива свойством Q;
- все ли элементы массива а обладают свойством Т.
Свойства Q и Т задаются в индивидуальных вариантах. Проверку правильности результата провести с помощью сравнения результатов итеративной и рекурсивной функций.
Программа должна содержать следующие функции:
- инициализация элементов массива случайными числами или вводимыми с клавиатуры;
- вывод массива на экран;
- итеративная функция, вычисляющая количество элементов массива, обладающих свойством Q;
- рекурсивная функция, вычисляющая количество элементов массива, обладающих свойством Q;
- итеративная функция, вычисляющая сумму элементов массива, обладающих свойством Q;
- рекурсивная функция, вычисляющая сумму элементов массива, обладающих свойством Т;
- итеративная логическая функция, проверяющая, обладает ли хотя бы один элемент массива свойством Q;
- рекурсивная логическая функция, проверяющая, обладает ли хотя бы один элемент массива свойством Q;
- итеративная логическая функция, проверяющая, все ли элементы массива а обладают свойством Т;
- рекурсивная логическая функция, проверяющая, все ли элементы массива а обладают свойством Т.
Варианты заданий
№ | Свойство Q | Свойство Т |
В1 | Число является четным. | Число содержит в своем составе цифры 2 и 3. |
В2 | Число является положительным. | Число начинается с цифры 1. |
В3 | Число содержит цифру 1. | Число является простым. |
В4 | Число не содержит цифру 0. | Первая цифра числа совпадает с последней. |
В5 | Число является нечетным. | Число является составным. |
В6 | Число является простым. | Число содержит в своем составе цифру 5. |
В7 | Число является двузначным. | Число не содержит в своем составе цифру 7. |
В8 | Число является симметричным. | Число является трехзначным. |
В9 | Сумма цифр числа равна 10. | Число является четным. |
В10 | Число не содержит четных цифр. | Число является простым. |
В11 | Число является составным. | Число начинается с 2. |
В12 | Число начинается с 3. | Число является составным. |
В13 | Число является степенью двойки. | Первая цифра числа является нечетной. |
В14 | Число содержит хотя бы одну четную цифру. | Число содержит в младшем разряде цифру 3. |
В15 | Число содержит цифру 3. | Число является составным. |
В16 | Число является трехзначным. | Число содержит в своем составе цифру 2. |
В17 | Число является степенью тройки. | Число не содержит в своем составе цифру 5. |
Уровень С
Постановка задания
Метод «Разделяй и властвуй»
Требуется определить одномерный целочисленный массив а из n элементов (например, $n = 30$), заполнить его случайными числами (в диапазоне от А до В, где А и В задаются в директивах #define) или ввести его элементы с клавиатуры и определить следующие его характеристики с помощью метода «разделяй и властвуй»:
- количество элементов массива, обладающих свойством Q;
- сумму элементов массива, обладающих свойством Т;
- обладает ли хотя бы один элемент массива свойством Q;
- все ли элементы массива а обладают свойством Т.
Свойства Q и Т задаются в индивидуальных вариантах. Проверку правильности результата провести с помощью сравнения результатов итеративной и рекурсивной функций. Также требуется упорядочить массив по возрастанию с помощью рекурсивной функции (алгоритм сортировки задается в варианте).
Программа должна содержать следующие функции:
- инициализация элементов массива случайными числами или вводимыми с клавиатуры;
- вывод массива на экран;
- итеративная функция, вычисляющая количество элементов массива, обладающих свойством Q;
- рекурсивная функция, вычисляющая количество элементов массива, обладающих свойством Q;
- итеративная функция, вычисляющая сумму элементов массива, обладающих свойством Q;
- рекурсивная функция, вычисляющая сумму элементов массива, обладающих свойством Т;
- итеративная логическая функция, проверяющая, обладает ли хотя бы один элемент массива свойством Q;
- рекурсивная логическая функция, проверяющая, обладает ли хотя бы один элемент массива свойством Q;
- итеративная логическая функция, проверяющая, все ли элементы массива а обладают свойством Т;
- рекурсивная логическая функция, проверяющая, все ли элементы массива а обладают свойством Т;
- рекурсивная сортировка элементов массива.
Варианты заданий
№ | Свойство Q | Свойство Т | Метод сортировки |
С1 | Число является четным. | Число состоит из попарно различных цифр. | Прямого выбора |
С2 | Число является положительным. | Только одна цифра в числе встречается ровно два раза, остальные — не более одного раза. | Вставками |
С3 | Число содержит цифру 1. | Цифры в числе упорядочены по возрастанию. | Пузырьковая |
С4 | Число не содержит цифру 0. | Число является симметричным в двоичном представлении. | Прямого выбора |
С5 | Число является нечетным. | Число является простым и не содержит в своем составе цифру 5. | Вставками |
С6 | Число является простым. | В числе хотя бы одна цифра встречается более одного раза. | Пузырьковая |
С7 | Число является двузначным. | Число состоит только из простых цифр. | Прямого выбора |
С8 | Число начинается на 1. | Каждая цифра, входящая в число, встречается ровно 2 раза. | Вставками |
С9 | Сумма цифр числа является четным числом. | Число является произведением двух различных простых чисел. | Пузырьковая |
С10 | Число является квадратом некоторого натурального числа. | Число является степенью некоторого простого числа. | Вставками |
Образец выполнения (вариант А12)
Условие задачи
Найти минимальный элемент целочисленного массива с помощью рекурсии.
Реализация задачи на языке Си
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | #include <stdio.h> // консольный ввод-вывод #include <conio.h> // задержка программы #include <time.h> // для инициализации зерна генерации #include <locale.h> // русификация диалогов #include <stdlib.h> // генерация случ.чисел #define N 8 // размер массива #define A -50 // минимальное значение элементов массива #define B +50 // максимальное значение элементов массива // инициализация массива случайными числами из отрезка [A; B] void Init(int a[]) { int i; for(i = 0; i < N; i++) a[i] = A + rand() % (B - A + 1); } // вывод элементов массива на экран void Print(const int a[]) { int i; for(i = 0; i < N; i++) printf("%6d", a[i]); printf("\n"); } // рекурсивная функция, вычисляющая минимальный элемент массива int Get_min_recursion(const int a[], const int pindex, int pindex_min) { if(pindex + 1 == N) return a[pindex_min]; if(a[pindex] < a[pindex_min]) pindex_min = pindex; return Get_min_recursion(a, pindex + 1, pindex_min); } // итеративная функция, вычислаяющая минимальный элемент массива int Get_min_iteration(const int a[]) { int min = a[0]; // гипотеза: минимальным является самый 1ый элемент массива int i; // перебираем оставшиеся элементы массива for(i = 1; i < N; i++) if(a[i] < min) // если текущий элемент меньше текущего минимального min = a[i]; // найден новый минимальный элемент return min; // в качестве ответа возвращается найденное минимальное значение массива } // главная функция программы (точка входа) int main(void) { int a[N]; // одномерный целочисленный массива // русификация диалогов + инициализация зерна генерации setlocale(LC_ALL, ""); srand(time(NULL)); // заполнение массива случайными числами + вывод элементов массива на экран Init(a); printf("Исходный массив имеет вид:\n\t"); Print(a); // нахождение минимального элемента массива двумя способами: рекурисвно и итеративно printf("\nМинимальный элемент массива (рекурсивная реализация): %d", Get_min_recursion(a, 1, 0)); printf("\nМинимальный элемент массива (итеративная реализация): %d", Get_min_iteration(a)); getch(); // задержка работы программы, чтобы была возможность просмотреть результат return 0; // завершение работы программы и передача управления в ОС } |
Результаты работы программы
ВНИМАНИЕ | Для получения программы своего варианта пишите на наш электронный адрес proglabs@mail.ru |
Добавить комментарий