Содержание
ВНИМАНИЕ | Для получения программы своего варианта пишите на наш электронный адрес proglabs@mail.ru |
Уровень А
Постановка задания
Требуется определить двумерный массив a целых чисел (например, размера $5 \times 7$), заполнить его случайными числами или ввести его элементы с клавиатуры и в одномерный массив b записать характеристики двумерного массива а в соответствии с вариантом задания.
Программа должна содержать следующие функции:
- инициализация элементов двумерного массива случайными числами или вводимыми с клавиатуры;
- заполнение одномерного массива в соответствии с заданием;
- вывод одномерного массива на экран;
- вывод двумерного массива на экран.
Варианты заданий
№ | Формулировка |
А1 | Найти суммы четных положительных элементов каждой строки матрицы а(5, 7) и сохранить их в одномерном массиве b. |
А2 | Найти количество четных положительных элементов каждой строки матрицы а(5, 7) и сохранить их в одномерном массиве b. |
А3 | Найти суммы нечетных положительных элементов каждого столбца матрицы а(5, 7) и сохранить их в одномерном массиве b. |
А4 | Найти количество нечетных положительных элементов каждого столбца матрицы а(5, 7) и сохранить их в одномерном массиве b. |
А5 | Найти суммы положительных элементов, делящихся на 3, каждой строки матрицы а(5, 7) и сохранить их в одномерном массиве b. |
А6 | Найти количество положительных элементов, делящихся на 5, каждой строки матрицы а(5, 7) и сохранить их в одномерном массиве b. |
А7 | Найти суммы положительных элементов, не делящихся на 3, каждого столбца матрицы а(5, 7) и сохранить их в одномерном массиве b. |
А8 | Найти количество положительных элементов, не делящихся на 5, каждого столбца матрицы а(5, 7) и сохранить их в одномерном массиве b. |
А9 | Найти минимальные элементы каждой строки матрицы а(5, 7) и сохранить их в одномерном массиве b. |
А10 | Найти минимальные элементы каждого столбца матрицы а(5, 7) и сохранить их в одномерном массиве b. |
А11 | Найти количество двузначных элементов каждой строки матрицы а(5, 7) и сохранить их в одномерном массиве b. |
А12 | Найти максимальные элементы каждой строки матрицы а(5, 7) и сохранить их в одномерном массиве b. |
А13 | Найти максимальные элементы каждого столбца матрицы а(5, 7) и сохранить их в одномерном массиве b. |
А14 | Найти суммы двузначных элементов каждого столбца матрицы а(5, 7) и сохранить их в одномерном массиве b. |
А15 | Найти количество минимальных элементов каждой строки матрицы а(5, 7) и сохранить их в одномерном массиве b. |
А16 | Найти количество максимальных элементов каждого столбца матрицы а(5, 7) и сохранить их в одномерном массиве b. |
А17 | Найти количество простых чисел каждой строки матрицы а(5, 7) и сохранить их в одномерном массиве b. |
Уровень В
Постановка задания
Требуется определить двумерных массив целых чисел (например, размера $5 \times 7$), заполнить его случайными числами (в диапазоне от А до В, где А и В задаются в директивах #define) или ввести его элементы с клавиатуры и преобразовать массив в соответствии с вариантом.
Программа должна содержать следующие функции:
- инициализация элементов двумерного массива случайными числами или вводимыми с клавиатуры;
- вывод двумерного массива на экран.
Варианты заданий
№ | Формулировка |
В1 | Задан прямоугольный массив целых чисел. Определить, есть ли такой элемент, который входит во все строки данного массива, но не во все столбцы, и напечатать его. |
В2 | Символьный квадратный массив заполнен случайным набором символов. Определить количество квадратиков, образованных совокупностью одинаковых символов, и их суммарную площадь. Квадратик — это образование из не менее чем $4 = 2 \times 2$ одинаковых рядом стоящих символов. Разные квадратики могут быть заполнены разными символами. |
В3 | В квадратный числовой массив записаны целые числа в диапазоне от А до В. Определить, имеются ли такие квадратные подмассивы, сумма элементов которых равна Р. Если таковые имеются, то вывести эти подмассивы на экран. |
В4 | Задан прямоугольный массив целых чисел. Определить, все ли строки состоят только из разных чисел, и напечатать строки, имеющие в своем составе одинаковые числа. |
В5 | Квадратный числовой массив моделирует расположение непересекающихся прямоугольников в квадрате, причем каждый прямоугольник заполнен своим числом, отличным от нуля, а промежутки межу ними заполнены нулями. Определить количество прямоугольников и их общую площадь. |
В6 | В квадратный числовой массив записаны целые числа в диапазоне от А до В. Отсортировать по убыванию элементы массива по строкам, а затем строки по убыванию первых элементов в строке. Результирующий массив вывести на экран. |
В7 | В логическом квадратном массиве порядка 8, моделирующем шахматную доску, значениям 1 соответствуют клетки, на которых расположены фигуры коня, 0 соответствует пустой клетке. Определить, имеются ли на доске фигуры, угрожающие другим, и напечатать их координаты. |
В8 | В числовом прямоугольном массиве $M \times N$ каждый элемент равен числу вида $100 \cdot i + j$, где $0 \leq i \leq M — 1,\ 0 \leq j \leq N — 1$, или нулю. Это число показывает, на какую следующую клетку (i, j) массива следует перейти с данной клетки. Нуль означает конец пути. Определить, можно ли таким образом посетить все клетки массива, начав с элемента (0, 0). Напечатать координаты начальной и конечной клеток, а также количество посещений. |
В9 | В прямоугольной матрице найти количество строк, элементы которых упорядочены по возрастанию. |
В10 | В частично заполненном значением 1 логическом квадратном массиве имеются свободные участки, моделируемые значением 0. Определить, можно ли разместить на них квадрат из значений 1 размером М. Если возможно, то напечатать массив со вставленным квадратом на экране. |
В11 | В логическом квадратном массиве порядка 8, моделирующем шахматную доску, значениям 1 соответствуют клетки, на которых расположены фигуры ферзя, 0 соответствует пустой клетке. Определить, сколько имеется на доске фигур, угрожающих другим, и удалить те из них, которые угрожают двум или более фигурам. |
В12 | В логическом квадратном массиве порядка 8, моделирующем шахматную доску, значениям 1 соответствуют клетки, на которых расположены фигуры слона, 0 соответствует пустой клетке. Определить, сколько имеется на доске фигур, угрожающих другим, и удалять их с доски до тех пор, пока слоны не будут угрожать друг другу. Напечатать количество оставшихся фигур. Результирующий массив вывести на экран. |
В13 | В прямоугольной матрице найти количество столбцов, элементы которых упорядочены по убыванию. |
В14 | Упорядочить строки прямоугольной матрицы так, чтобы их первые элементы образовывали возрастающую последовательность. |
В15 | В прямоугольной матрице найти количество столбцов, которые состоят из попарно различных элементов. |
В16 | В прямоугольной матрице найти номер первого из ее столбцов, содержащих максимальное количество одинаковых элементов. |
В17 | В прямоугольной целочисленной матрице найти номер последней из ее строк, содержащих максимальное количество простых чисел. |
Уровень С
Постановка задания
Требуется определить двумерный массив целых чисел (например, размера $5 \times 7$), заполнить его случайными числами (в диапазоне от А до В, где А и В задаются в директивах #define) или ввести его элементы с клавиатуры и преобразовать массив в соответствии с вариантом задания.
Программа должна содержать следующие функции:
- инициализация элементов двумерного массива случайными числами или вводимыми с клавиатуры;
- вывод двумерного массива на экран.
Варианты заданий
№ | Формулировка |
С1 | В квадратный числовой массив записаны целые числа в диапазоне от А до В. Отсортировать по убыванию элементы массива, расположенные по часовой стрелке по спирали, начиная с верхнего левого элемента. Результирующий массив вывести на экран. |
С2 | Символьный квадратный массив заполнен случайным набором символов. Найти цепочки, расположенные по вертикали и горизонтали и состоящие из цифр, преобразовать их в числа и напечатать на экран эти числа и их сумму. |
С3 | Квадратный массив, элементами которого являются английские буквы и символ пробела, заполнен кроссвордом. Напечатать все слова в кроссворде с чередующимися гласными и согласными буквами и их количество. |
С4 | Квадратный массив, элементами которого являются английские буквы и символ пробела, заполнен кроссвордом. Напечатать общее количество слов в кроссворде и все буквы, которые находятся на пересечении слов кроссворда. |
С5 | В числовом квадратном массиве построить «спираль Улама» следующим образом: начиная с центрального элемента по спирали против часовой стрелки массив заполняется натуральными числами от $1$ до $N^2$. Определить количество простых чисел в массиве. |
С6 | Две строки матрицы назовем эквивалентными, если совпадают множества элементов, встречающихся в этих строках, например, строки «1, 2, 1» и «2, 1, 2» эквивалентны. Найти количество строк матрицы, эквивалентных первой строке. |
С7 | Найти минимальный среди элементов тех строк, которые упорядочены либо по возрастанию, либо по убыванию. Если упорядоченные строки в матрице отсутствуют, то вывести сообщение об этом. |
С8 | Найти минимальный среди элементов тех столбцов, которые упорядочены либо по возрастанию, либо по убыванию. Если упорядоченные столбцы в матрице отсутствуют, то вывести сообщение об этом. |
С9 | Упорядочить строки матрицы так, чтобы их минимальные элементы образовывали убывающую последовательность. |
С10 | Два столбца матрицы назовем эквивалентными, если совпадают множества элементов, встречающихся в этих столбцах, например, столбцы «1, 2, 1» и «2, 1, 2» эквивалентны. Найти количество столбцов матрицы, эквивалентных первому столбцу. |
Образец выполнения (вариант В14)
Постановка задания
Упорядочить строки прямоугольной матрицы так, чтобы их первые элементы образовывали возрастающую последовательность.
Реализация задачи на языке Си
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 77 78 79 80 81 82 83 84 85 | #include <stdio.h> // для вывода на экран #include <conio.h> // для имитации задержки программы #include <stdlib.h> // для генерации случайного числа #include <time.h> // для засеивания зерна генерации #include <locale.h> // для русификации диалогов программы #define N 5 // количество строк двумерного массива #define M 9 // количество колонок двумерного массива #define A -50 // левая граница значений элементов массива #define B +50 // правая граница значений элементов массива // инициализация элементов двумерного массива случайным образом из отрезка [A ... B] void Init(int pa[][M]) { int i, j; for(i = 0; i < N; i++) for(j = 0; j < M; j++) pa[i][j] = A + rand() % (B - A + 1); } // вывод массива на экран void Print(const int pa[][M], const char* const pmessage) { int i, j; printf(pmessage); for(i = 0; i < N; i++) { for(j = 0; j < M; j++) printf("%6d", pa[i][j]); printf("\n"); } printf("\n"); } // обмен местами элементов, стоящих в строках с индексами pup_row и pdown_row void Swap_rows(int pa[][M], const int pup_row, const int pdown_row) { int j, swap; for(j = 0; j < M; j++) { swap = pa[pup_row][j]; pa[pup_row][j] = pa[pdown_row][j]; pa[pdown_row][j] = swap; } } // сортировка массива по правилу: первые элементы массива образуют возрастающую последовательность // за основу взят метод сортировки выбором void Sort(int pa[][M]) { int i, j, index_row_min; for(i = 0; i < (N - 1); i++) { index_row_min = i; for(j = (i + 1); j < N; j++) if(pa[j][0] < pa[index_row_min][0]) index_row_min = j; if(index_row_min != j) Swap_rows(pa, i, index_row_min); } } // главная функция программы (точка входа) int main(void) { int a[N][M]; // двумерный статический целочисленный массив размера NxM setlocale(LC_ALL, ""); // русификация диалогов srand(time(NULL)); // засеивание зерна генерации (привязка к текущему системному времени) // инициализация массива и вывод его содержимого на экран Init(a); Print(a, "Исходный массив имеет вид:\n"); // сортировка элементов массива по правилу и вывод его содержимого на экран Sort(a); Print(a, "\nОтсортированный массив (первые элементы образуют возрастающую последовательность) имеет вид:\n"); getch(); // имитация задержки работы программы, чтобы была возможность просмотреть результат return 0; // завершение работы программы и передача управления в ОС } |
Результаты работы программы
ВНИМАНИЕ | Для получения программы своего варианта пишите на наш электронный адрес proglabs@mail.ru |
Добавить комментарий