Переписать программу для работы с двумерным массивом - C (СИ)
Формулировка задачи:
/*КАК СДЕЛАТЬ ЭТО С ДВУХМЕРНЫМ МАССИВОМ???*/
///REALLOC : ОДНОМЕРНЫЙ #include<iostream> #include <stdio.h> #include <stdlib.h> #include <unistd.h> using namespace std; int main(int argc, char** argv) { int i,j=0; int *BMP=NULL; int m=3; int n=3; int k=0; while(1) { BMP=(int*)realloc(BMP,n*sizeof(int)); //////////////////////////////////////////////////////////////////// for (i=0+k;i<n;i++) { printf("BMP[%d] = ... ",i); scanf("%d",&BMP[i]); } printf("\n"); for (i=0;i<n;i++) { printf("BMP[%d] => %d \n",i,BMP[i]); } printf("\n\n"); k=n; n+=3; //////////////////////////////////////////////////////////////////// } return 0; }
Решение задачи: «Переписать программу для работы с двумерным массивом»
textual
Листинг программы
int **a;//это будет массив массивов (точнее, массив ссылок) a = (int **)malloc(10*4);//создём 10 элементов по 4 байта каждый. Честно говоря, не знаю как лучше это написать. Для 64-битных систем будет, скорее всего, 10*8 for (i = 0; i < 10; i++) a[i] = (int *)malloc(10*sizeof(int));//к каждому элементу a[i] прицепляем массив из 10 элементов целого типа. for (i = 0; i < 10; i++) for (j = 0; j < 10; j++){ a[i][j] = rand() % 20; printf("%i ", a[i][j]); };
Объяснение кода листинга программы
- Объявляется двумерный массив a типа int **, то есть это массив указателей на массивы int.
- С помощью malloc(104) выделяется память под 10 элементов по 4 байта каждый. При этом, если система 64-битная, то скорее всего будет использоваться 108.
- В цикле for с помощью malloc(10*sizeof(int)) к каждому элементу a[i] прицепляется массив из 10 элементов целого типа.
- В цикле for двойной вложенности в каждой итерации заполняется массив a[i][j] случайным числом от 0 до 19 и выводится на экран с помощью printf(
%i
, a[i][j]);.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д