Дан двумерный массив 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;
}

Объяснение кода листинга программы

  1. Подключение необходимых библиотек для работы с функциями ввода-вывода, генерацией случайных чисел и временем.
  2. Определение размеров двумерного массива N x M.
  3. Инициализация генератора случайных чисел начальным значением, используя текущее время как семя.
  4. Инициализация массива A случайными числами в диапазоне от 0 до 71.
  5. Вывод значений массива A в консоль, построчно, с интервалом в 3 символа.
  6. Поиск в массиве A пар чисел, которые встречаются одновременно в строках и столбцах массива, и сохранение их в массив B.
  7. Если число A[i][j] уникально, то оно добавляется в массив B и выводится на новой строке вместе с координатами (i, j) в массиве A.
  8. Вывод значений массива B в консоль, построчно, с интервалом в 3 символа.
  9. Возврат 0, что означает успешное завершение программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.25 из 5
Похожие ответы