Записать двумерный массив в одномерный - 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 раз для каждого элемента, это означает, что элемент уникален, и его значение выводится на экран. Поэтому этот код считает количество различных элементов в массиве.