Функция, проверяющая, является ли заданная последовательность чисел симметричной - C (СИ)
Формулировка задачи:
Составить функцию, которая для одномерного массива целых чисел проверяет, является ли заданная последовательность чисел симметричной. В случае симметричности функция должна возвращать значение истина, в противном случае - ложь. С помощью составленной функции определить в матрице Х(k,m),
k<= 12, m<=14 все строки, являющиеся симметричными, и переписать их без пропусков в новую матрицу.
Прогу через функции надо.
Решение задачи: «Функция, проверяющая, является ли заданная последовательность чисел симметричной»
textual
Листинг программы
#include <stdio.h>
#define K 12
#define M 14
int control(int arr[], int size)
{
int n1, n2;
n1 = 0;
n2 = size - 1;
while (n1 < n2) {
if (arr[n1] != arr[n2])
return 0;
++n1;
--n2;
}
return 1;
}
int main(void)
{
int arr[K][M] = { {1,2,3,4,5,6,7,7,6,5,4,3,2,1},
{0,9,8,7,6,5,4,3,2,2,2,1,1,1},
{7,6,5,4,3,2,1,1,2,3,4,5,6,7},
{1,2,3,4,5,6,7,8,9,0,1,2,3,4},
{1,1,1,1,2,2,2,2,2,2,2,1,1,1},
{1,2,3,4,5,6,7,1,2,3,4,5,6,7},
{1,3,2,4,5,7,6,6,7,5,4,2,3,1},
{3,3,3,2,2,1,1,3,3,3,2,2,1,1},
{5,5,5,5,5,5,5,5,3,5,5,5,5,5},
{1,2,3,4,5,6,7,6,6,5,4,3,2,1},
{7,1,6,2,5,3,4,4,3,5,2,6,1,7},
{0,0,0,0,0,0,1,2,0,0,0,0,0,0} };
int i = 0;
int n = 0;
while (i < K)
if (control(arr[i++], M))
++n;
int arr2[n][M];
int j = 0;
int k;
i = 0;
while (i < K) {
if (control(arr[i], M)) {
k = 0;
while (k < M)
arr2[j][k] = arr[i][k++];
++j;
}
++i;
}
puts("------------------------------");
i = 0;
while (i < n) {
j = 0;
while(j < M)
printf("%i ", arr2[i][j++]);
putchar('\n');
++i;
}
return 0;
}
Объяснение кода листинга программы
В этом коде реализована функция, которая проверяет, является ли заданная последовательность чисел симметричной. Для этого используется алгоритм, который сравнивает элементы последовательности с их зеркальными отражениями. Если последовательность симметрична, то все пары элементов равны. Код начинается с объявления двух массивов: массива K размера M и массива M размера N. Затем в цикле заполняется второй массив, путем копирования элементов из первого массива, если они присутствуют в обоих массивах. Далее идет проверка на симметрию. Если элементы не равны, то возвращается 0, иначе функция продолжает работу. Затем идет вывод на экран полученного результата.