Адресная арифметика и массивы - C (СИ)

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

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

Нужно с помощью указателя организовать ввод и вывод матрицы. Индексную адресацию не использовать. Вот мой код, что не так в нем?
#include <stdio.h>
 
int main()
{
    int n,m;
    scanf("%d%d",&n,&m);
    int *mas;
    mas=(int*)calloc(n*m,sizeof(int));
    for(int i = 0; i < n; i ++)
        for( int j = 0; j < m; j++)
            scanf("%d",(mas + i*m + j));
    for(int i = 0; i < n; i ++)
        for( int j = 0; j < m; j++)
            printf("%d",(mas + i*m + j));
}

Решение задачи: «Адресная арифметика и массивы»

textual
Листинг программы
#include <stdio.h>
int main()
{
    int n,m;
    scanf("%d%d",&n,&m);
    int *mas;
    mas=(int*)calloc(n*m,sizeof(int));
    for(int i = 0; i < n; i ++)
        for( int j = 0; j < m; j++)
            scanf("%d",(mas + i*m + j));
    for(int i = 0; i < n; i ++)
    {
        for( int j = 0; j < m; j++)
            printf("%d ",*(mas + i*m + j));
        printf("\n");
    }
    return 0;
}

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

В этом коде выполняется операция чтения и вывода массива, размеченного с помощью адресов, используя адресную арифметику.

  1. Объявлены две переменные типа int: n и m. Они используются для определения размеров массива.
  2. Массив mas инициализируется как указатель на первый элемент массива размером n*m.
  3. С помощью функции calloc выделяется память под массив размером n*m.
  4. Используя два вложенных цикла, в массив читаются n*m значений.
  5. С помощью двух вложенных циклов, элементы массива выводятся на экран через пробел.
  6. В конце программы возвращается 0, что означает успешный конец работы программы.

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


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

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

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