Переписать программу для работы с двумерным массивом - 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]);
    };

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

  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
Похожие ответы