Определить пару матриц с наибольшим количеством чисел "близнецов" - C (СИ)
Формулировка задачи:
Решение задачи: «Определить пару матриц с наибольшим количеством чисел "близнецов"»
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
typedef struct table {
char *name;
int **matr;
} Tables;
int main()
{
int T, N, M;
int i, j, h;
Tables *table;
printf("Enter the T (number of structures):");
scanf("%d", &T);
table = (Tables *)malloc(T * sizeof(Tables));
printf ("\nEnter the N (the size of the matrix):");
scanf("%d", &N);
for (int k = 0; k < T; k++) {
printf ("\nEnter the name of the %d-th matrix - ", k+1);
table[k].name=(char *)malloc(10 * sizeof(char));
scanf("%s", table[k].name);
printf ("\nEnter the elements of the matrix %s \n",table[k].name);
table[k].matr=(int **)malloc(N*sizeof(int *));
for (int i = 0; i < N; i++) {
table[k].matr[i]=(int *)malloc(N * sizeof(int));
for (int j = 0; j < N; j++) {
printf ("%s[%d][%d]= ", table[k].name, i, j);
scanf ("%d", &table[k].matr[i][j]);
}
}
}
getch();
}
Объяснение кода листинга программы
В этом коде определен тип структуры table, который содержит имя матрицы (строка символов) и саму матрицу (двумерный массив целых чисел).
Затем в основной функции main определены следующие переменные:
T - количество структур;
N - размер матрицы;
M - размер матрицы (не используется, но должна быть объявлена для корректной работы функции scanf);
i, j, h - индексы для перемещения по матрице.
С помощью функции malloc выделяется память под матрицы и их имена.
Затем происходит заполнение матриц с помощью функции scanf.
Функция getch используется для приостановки выполнения программы до тех пор, пока пользователь не нажмет клавишу.
Возможно, следующий шаг в коде должен был быть связан с поиском пар матриц с наибольшим количеством одинаковых чисел (близнецов), но этот шаг отсутствует в предоставленном коде.