Переписать программу для работы с двумерным массивом - C (СИ)

Узнай цену своей работы

Формулировка задачи:

/*КАК СДЕЛАТЬ ЭТО С ДВУХМЕРНЫМ МАССИВОМ???*/

Листинг программы
  1. ///REALLOC : ОДНОМЕРНЫЙ
  2. #include<iostream>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <unistd.h>
  6.  
  7. using namespace std;
  8.  
  9. int main(int argc, char** argv)
  10. {
  11. int i,j=0;
  12. int *BMP=NULL;
  13. int m=3;
  14. int n=3;
  15. int k=0;
  16. while(1)
  17. {
  18. BMP=(int*)realloc(BMP,n*sizeof(int));
  19. ////////////////////////////////////////////////////////////////////
  20. for (i=0+k;i<n;i++)
  21. {
  22. printf("BMP[%d] = ... ",i);
  23. scanf("%d",&BMP[i]);
  24. }
  25. printf("\n");
  26. for (i=0;i<n;i++)
  27. {
  28. printf("BMP[%d] => %d \n",i,BMP[i]);
  29. }
  30. printf("\n\n");
  31. k=n;
  32. n+=3;
  33. ////////////////////////////////////////////////////////////////////
  34. }
  35.  
  36. return 0;
  37. }

Решение задачи: «Переписать программу для работы с двумерным массивом»

textual
Листинг программы
  1. int **a;//это будет массив массивов (точнее, массив ссылок)
  2.  
  3.  
  4.     a = (int **)malloc(10*4);//создём 10 элементов по 4 байта каждый. Честно говоря, не знаю как лучше это написать. Для 64-битных систем будет, скорее всего, 10*8
  5.     for (i = 0; i < 10; i++)
  6.         a[i] = (int *)malloc(10*sizeof(int));//к каждому элементу a[i] прицепляем массив из 10 элементов целого типа.
  7.  
  8.     for (i = 0; i < 10; i++)
  9.     for (j = 0; j < 10; j++){
  10.         a[i][j] = rand() % 20;
  11.         printf("%i ", a[i][j]);
  12.     };

Объяснение кода листинга программы

  1. Объявляется двумерный массив a типа int **, то есть это массив указателей на массивы int.
  2. С помощью malloc(104) выделяется память под 10 элементов по 4 байта каждый. При этом, если система 64-битная, то скорее всего будет использоваться 108.
  3. В цикле for с помощью malloc(10*sizeof(int)) к каждому элементу a[i] прицепляется массив из 10 элементов целого типа.
  4. В цикле for двойной вложенности в каждой итерации заполняется массив a[i][j] случайным числом от 0 до 19 и выводится на экран с помощью printf(%i, a[i][j]);.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.857 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы