Нужно чтоб матрица выводилась через динамический массив - C (СИ)
Формулировка задачи:
#include <stdio.h> #include <stdlib.h> #include <conio.h> int main() { /*int A[N][M] = { { 0, 1, 0 }, { 0, 2, 0 }, { 0, 4, 0 }, { 1, 5, 0 }};// Задаем произвольную матрицу*/ int i,j,M,N; int** matrix; printf("Vvedite N\n"); scanf("%d", &N); printf("Vvedite M\n"); scanf("%d", &M); for (i = 0; i<N; i++) { for (j = 0; j<M; j++) printf("%d", matrix [i][j]); printf("\n");} matrix = (int **)malloc(N*sizeof (int*)); matrix = (int **)malloc(M*sizeof (int*)); int B[M]; // Иницилизируем количество нулём for (j = 0; j < M; j++) // Инициализируем массив { int i, fzero = 0; for (i = 0; i < N && !fzero; i++) if (matrix[i][j] != 0) fzero = 1; // Если элемент не ноль "признак нуля" ложь if (fzero == 0) { B[i] = j; i++; } // Если "признак нуля" истина } int t; for (t = 0; t < i; t++) printf("%d", B[t]); // Вывод номера столбца printf("\nKolichestvo nulevih stolbcov = %d\n"); // Печать результата return 0; }
Решение задачи: «Нужно чтоб матрица выводилась через динамический массив»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <conio.h> int main() { /*int A[N][M] = { { 0, 1, 0 }, { 0, 2, 0 }, { 0, 4, 0 }, { 1, 5, 0 }};// Задаем произвольную матрицу*/ int i,j,M,N; int * matrix; int *B; printf("Vvedite N\n"); scanf("%d", &N); printf("Vvedite M\n"); scanf("%d", &M); matrix = (int *)malloc(N*M*sizeof (int)); //?? а где ввод матрицы ???? for (i = 0; i<N; i++) { for (j = 0; j<M; j++) { printf("a[%d][%d]: ", i,j); scanf ("%d", &matrix[i*N+j]); ///!!!!! } printf("\n"); } for (i = 0; i<N; i++) { for (j = 0; j<M; j++) { printf("%4d ", matrix[i*N+j]); } printf("\n"); } B=(int*)calloc(M, sizeof(int)); // Иницилизируем количество нулём for (j = 0; j < M; j++) { // Инициализируем массив int fzero = 0; for (i = 0; i < N && !fzero; i++) if (matrix[i*N+j] != 0) fzero = 1; // Если элемент не ноль "признак нуля" ложь if (fzero == 0) B[j] = j; // Если "признак нуля" истина } int t; for (t = 0; t < i; t++) printf("%4d", B[t]); // Вывод номера столбца printf("\nKolichestvo nulevih stolbcov = %d\n", t); // Печать результата free(matrix) ; free(B); return 0; }
Объяснение кода листинга программы
В этом коде:
- Создается матрица динамическим массивом.
- Задается произвольная матрица.
- Вводится размер матрицы N и M.
- Матрица инициализируется нулями.
- Вводится матрица по одному элементу каждой строки.
- Матрица выводится на экран.
- Создается массив B.
- Инициализируется массив B нулями.
- Перебираются элементы матрицы.
- Если элемент не равен нулю, то увеличивается счетчик нулей в соответствующем столбце массива B.
- Выводится на экран количество нулей в матрице.
- Освобождаются динамические массивы.
- Завершается программа.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д