Задача по двумерному массиву - C (СИ)
Формулировка задачи:
Создать матрицу B[1..N,1..M] из целых чисел. Из каждой строки напечатать числа, которых нет в следующей строке. Числа эти записать построчно в новую матрицу, заполняя нулями недостающие значения до конца строки.
#include <stdio.h> #include "stdafx.h" #include <locale.h> #include <stdlib.h> #include <ctime> int main() { setlocale(0, "russian"); int i, j,k; const int m=5, n=4; int NotMyArray[m][n] = { 0 }; int myArray[m][n]; srand(unsigned(time(NULL))); for (i = 0; i < m; i++) { for (j = 0; j < n; j++) myArray[i][j] = ((rand() % 10)); } printf("Массив:\n"); for (i = 0; i < m; i++) { for (j = 0; j < n; j++) printf("A[%d][%d]=%d ", i, j, myArray[i][j]); printf("\n"); } for (i = 0; i < m; i++) for (j = 0; j < n; j++) { if (myArray[i][j] != myArray[i + 1][j]) { NotMyArray[i][j] = myArray[i][j]; } else { NotMyArray[i][j] = 0; } } printf("Второй массив: \n"); for (i = 0; i < m; i++) { for (j = 0; j < n; j++) printf("B[%d][%d]=%d ", i, j, NotMyArray[i][j]); printf("\n"); } getchar(); }
Решение задачи: «Задача по двумерному массиву»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <time.h> #define N 7 #define M 9 int main() { int i, j, k, q = 0, flag = 0, A1[N][M], A2[N][M]; srand(time(NULL)); for(i = 0; i < N; i++,putchar('\n')) for(j = 0; j < M; j++) printf("%3d", A1[i][j] = rand() % 30 + 1); for(i = 0; i < N; i++, q = 0){ for(j = 0; j < M; j++, flag = 0){ for(k = 0; k < M; k++){ if(i == N - 1){ if(A1[i][j] == A1[0][k]){ flag = 1; break; } } else if(A1[i][j] == A1[i + 1][k]){ flag = 1; break; } } if(!flag) A2[i][q++] = A1[i][j]; } for(; q < M; q++) A2[i][q] = 0; } putchar('\n'); for(i = 0; i < N; i++,putchar('\n')) for(j = 0; j < M; j++) printf("%3d", A2[i][j]); return 0; }
Объяснение кода листинга программы
В этом коде генерируется двумерный массив случайных целых чисел, затем выполняется сортировка этого массива по второму измерению (строкам) с помощью сортировки пузырьком. Затем выводится отсортированный массив. Вот список номеров и названий переменных с их значениями:
- N, M - определяют размерность массива (7 строк и 9 столбцов соответственно)
- int i, j, k, q = 0, flag = 0 - это целочисленные переменные, используемые в качестве счетчиков и флагов в циклах
- A1[N][M], A2[N][M] - это двумерные массивы для хранения случайных и отсортированных значений соответственно
- srand(time(NULL)) - инициализация генератора случайных чисел текущим временем
- for(i = 0; i < N; i++,putchar('\n')) - цикл для прохода по строкам массива A1 и вывода каждой строки на новой строке
- for(j = 0; j < M; j++) - цикл для прохода по столбцам текущей строки
- printf(
%3d
, A1[i][j] = rand() % 30 + 1) - вывод значения элемента массива A1 и его генерация случайным образом от 1 до 30 - for(i = 0; i < N; i++, q = 0){ - цикл для прохода по строкам массива A2 (отсортированного массива)
- for(j = 0; j < M; j++, flag = 0){ - цикл для прохода по столбцам текущей строки
- for(k = 0; k < M; k++){ - цикл для прохода по столбцам для проверки на идентичность элементов
- if(i == N - 1){ - проверка, является ли текущая строка последней
- if(A1[i][j] == A1[0][k]){ - проверка на идентичность с первым столбцом
- flag = 1; break; - установка флага, если элемент найден
- }
- }
- else - проверка, является ли текущая строка не последней
- if(A1[i][j] == A1[i + 1][k]){ - проверка на идентичность с следующим столбцом
- flag = 1; break; - установка флага, если элемент найден
- }
- if(!flag) - проверка, установлен ли флаг
- A2[i][q++] = A1[i][j]; - добавление элемента в отсортированный массив
- for(; q < M; q++) - инициализация счетчика для заполнения оставшихся элементов массива A2 нулями
- A2[i][q] = 0; - заполнение оставшихся элементов массива A2 нулями
- putchar('\n'); - переход на новую строку после вывода каждой строки массива A2
- for(i = 0; i < N; i++,putchar('\n')) - цикл для прохода по строкам массива A2 и вывода каждой строки на новой строке
- for(j = 0; j < M; j++) - цикл для прохода по столбцам текущей строки
- printf(
%3d
, A2[i][j]) - вывод значения элемента массива A2 - return 0; - завершение программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д