Дан двумерный массив N x M. Выяснить, есть ли в нём одинаковые числа, распечатать их значения и номера - C (СИ)
Формулировка задачи:
Собственно задали такую задачку.
С вводом двумерного массива вроде разобрался, а вот с запоминанием повторяющихся чисел - провал.
Преподаватель сказал использовать для эти целей лишь цикл
for
, а для хранения других данных (значения повторяющихся чисел и их номеров) использовать одномерные массивы. Подскажите пожалуйста, как наиболее оптимально решить данную задачу, не выходя за рамки дозволенного?? Заранее СпасибоРешение задачи: «Дан двумерный массив N x M. Выяснить, есть ли в нём одинаковые числа, распечатать их значения и номера»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <time.h> #define N 7 #define M 9 int main() { int A[N][M], B[N * M / 2], i, j, k, l, q = 0, flag, p; srand(time(NULL)); for(i = 0; i < N; i++, putchar('\n')) for(j = 0; j < M; j++) printf("%3d", A[i][j] = rand() % 72); for(i = 0; i < N; i++) for(j = 0; j < M; j++) for(k = i; k < N; k++) for(l = j; l < M; l++){ if(A[i][j] == A[k][l] && (i != k || j != l)){ for(p = 0, flag = 0; p < q; p++){ if(A[i][j] == B[p]) flag = 1; } if(!flag){ B[q++] = A[i][j]; break; } } } putchar('\n'); for(p = 0; p < q; p++, putchar('\n')){ printf("%3d ", B[p]); for(i = 0; i < N; i++) for(j = 0; j < M; j++) if(A[i][j] == B[p]) printf("A[%d][%d] ", i, j); } return 0; }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с функциями ввода-вывода, генерацией случайных чисел и временем.
- Определение размеров двумерного массива N x M.
- Инициализация генератора случайных чисел начальным значением, используя текущее время как семя.
- Инициализация массива A случайными числами в диапазоне от 0 до 71.
- Вывод значений массива A в консоль, построчно, с интервалом в 3 символа.
- Поиск в массиве A пар чисел, которые встречаются одновременно в строках и столбцах массива, и сохранение их в массив B.
- Если число A[i][j] уникально, то оно добавляется в массив B и выводится на новой строке вместе с координатами (i, j) в массиве A.
- Вывод значений массива B в консоль, построчно, с интервалом в 3 символа.
- Возврат 0, что означает успешное завершение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д