Как правильно передавать динамический двухмерный массив - C (СИ)
Формулировка задачи:
#include "stdafx.h" #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <locale.h> #include <time.h> #include <math.h> int main(int argc, char argv[]) { setlocale(LC_ALL,"Russian"); int vuvod(int a,int **); int zadanie(int a); int zadanie2(int a); srand(time(NULL)); const int n=100; int i,j,a,v; int mas[100][100]; int **mas; //создание динамического массива printf("Введите размерность матрици:"); mas = (int **)malloc(sizeof(int*)*a); for (int i = 0; i < a;i++) { mas[i] = (int*)malloc(sizeof(int)*a); } scanf("%d",&a); //заполнение массива for(i=0;i<=a-1;i++) { for(j=0;j<=a-1;j++) { mas[i][j]=rand()%99; } } printf("Исходная матрица\n"); vuvod(a,&mas); printf("Введите номер задания которое нужно виполнить:1 или 2?"); scanf("%d",&v); if (v==1) {zadanie(a);} if (v==2) {zadanie2(a);} printf("Матрица после перестановики\n"); vuvod(a); getch(); return 0; } //вивод массив на екран int vuvod(int a,int ** mas) { int i,j; for(i=0;i<=a-1;i++) { for(j=0;j<=a-1;j++) { printf("%3d",mas[i][j]); } printf("\n"); } return 0; } //виполнения 1 задания int zadanie (int a) { int i,j,x; for (i=0;i<=a-2;i++) { for (j=0;j<=a-1-i;j++) { x=mas[i][j]; mas[i][j]=mas[a-1-j][a-1-i]; mas[a-1-j][a-1-i]=x; } } return 0; } //виполнения 2-задания int zadanie2(int a) { int i,j,x; if(a%2==0) { for (i=0;i<=a/2-1;i++) { for(j=0;j<=a/2-1;j++) { x=mas[i][j]; mas[i][j]=mas[i][(a/2)+j]; mas[i][(a/2)+j]=x; } } for (i=0;i<=a/2-1;i++) { for(j=0;j<=a/2-1;j++) { x=mas[i][j]; mas[i][j]=mas[(a/2)+i][(a/2)+j]; mas[(a/2)+i][(a/2)+j]=x; } } for(i = 0;i <=a/2; i++) { for(j = 0;j <=a/2 ;j++) { x = mas[i][j]; mas[i][j] = mas[(a/2)+i][j]; mas[(a/2)+i][j] = x; } } } else printf("Матрица должна быть размерности кратной 2!"); return 0; }
Решение задачи: «Как правильно передавать динамический двухмерный массив»
textual
Листинг программы
int **mas = (int **)malloc(m*sizeof(int)); for(int i = 0; i < m; i++){ mas[i] = (int *)malloc(n*sizeof(int)); }
Объяснение кода листинга программы
- Создается двумерный массив типа int **mas с помощью оператора malloc.
- В цикле for происходит выделение памяти под каждый элемент массива mas[i] с помощью оператора malloc.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д