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