Записать двумерный массив в одномерный - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Хочу записать двумерный массив a[M][N] в одномерный b[M*N]. Подскажите пожалуйста, в чем моя ошибка?
#define M 3
#define N 3
void Rec(int *b, int n)
{
    int k, i, j, a[M][N];
    i = j = 0;
 
    for ( i = 0; i < M; i++)
        for ( j = 0; j < N; j++)
            for (  k = 0; k < n; k++)
                b[k] = a[i][j];     
}
void main()
{
    srand(time(NULL));
    int b[M*N], a[M][N];
    Rec(b,M*N);
}

Решение задачи: «Записать двумерный массив в одномерный»

textual
Листинг программы
void CountDifferent(const int *b, const int n) {
    int k, i, j;
    
    for (i = 0; i < n; i++)
    {
        for(j = 0; j < n; ++j) {
            if((b[i] == b[j]) && (i != j)) {
                break;
            }
        }
 
        if(j == n) {
            fprintf(stdout, " b = %3d\n", b[i]);
        }
 
    }
}

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

В этом коде функция CountDifferent принимает на вход двумерный массив b и его размер n. Функция перебирает все элементы массива b, используя два вложенных цикла. Внутренний цикл перебирает все элементы, начиная с текущего элемента внешнего цикла, и проверяет, равны ли они. Если да, то цикл прерывается, и функция переходит к следующему элементу внешнего цикла. Если внутренний цикл был выполнен n раз для каждого элемента, это означает, что элемент уникален, и его значение выводится на экран. Поэтому этот код считает количество различных элементов в массиве.

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


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

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

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