Вывод двухмерного динамического массива - C (СИ)

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

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

Добрый день, суть программы в том, что пользователь вводит массив n*n, а программа выводит его, увеличив каждый элемент в два раза. Нужна простейшая программа, без всяких выкрутасов, чтобы я смог разобраться в теме. Заранее очень благодарю!
Я написал вот-так - но компилятор выдает ошибку на 24 строке.
#include <stdio.h>
#include "stdlib.h"
 
int main (int argc, const char * argv[])
{
    int *a;
    int i, j, z, i1, j1, z1, n;
    printf("n=");
    scanf("%i", &n);
    a = (int*)malloc(n*n*sizeof(float));
    for (i=0; i<n; i++) {
        for (j=0; j<n; j++) {
            printf("\n Vvedite a[%d][%d]", i+1, j+1);
            scanf("%d", *(a+i)+j);
        }
    }
    for (i=0; i<n; i++) {
        for (j=0; j<n; j++) {
            *(*(a+i)+j) = *(*(a+i)+j) * 2;
        }
    }
    for (i=0; i<n; i++) {
        for (j=0; j<n; j++) {
            printf("%d", *(*(a+i)+j) );
            printf("\n");
            
        }
    }
    free(a);
        return 0;
}

Решение задачи: «Вывод двухмерного динамического массива»

textual
Листинг программы
#include <stdio.h>
#include "stdlib.h"
 
int main (int argc, const char * argv[])
{
    int **a;
    int i, j, z, i1, j1, z1, n;
    printf("n = ");
    scanf("%d", &n);
 
    a = (int**)malloc(n*sizeof(int*));
    for (i = 0; i < n; i ++) *(a+i) = (int*)malloc(n*sizeof(int));
 
    for (i = 0; i < n; i++) {
        for (j = 0; j < n; j++) {
            printf("\nVvedite a[%d][%d] = ", i+1, j+1);
            scanf("%d", *(a+i)+j);
        }
    }
 
    for (i = 0; i < n; i++) {
        for (j = 0; j < n; j ++) {
            *(*(a+i)+j) = *(*(a+i)+j) * 2;
        }
    }
 
    for (i = 0; i < n; i ++) {
        for (j = 0; j < n; j ++) {
            printf("%4d", *(*(a+i)+j) );
        }
        printf("\n");
    }
 
    for (i = 0; i < n; i ++) free(a[i]);
    free(a);
    return 0;
}

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

Код представляет собой программу на языке C, которая выполняет следующие действия:

  1. Объявляет двумерный динамический массив a типа int и инициализирует его с помощью malloc().
  2. Запрашивает у пользователя размер массива n с помощью scanf().
  3. Выделяет память под n строк массива a с помощью цикла for и malloc().
  4. Запрашивает у пользователя значения для каждой ячейки массива a с помощью цикла for и scanf().
  5. Умножает каждое значение в массиве на 2 с помощью цикла for и *=.
  6. Выводит значения массива на экран с помощью цикла for и printf().
  7. Освобождает память, выделенную под массив a, с помощью цикла for и free().
  8. Возвращает 0, завершая работу программы.

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


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

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

7   голосов , оценка 4.571 из 5
Похожие ответы