Адресная арифметика и массивы - 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; }
Объяснение кода листинга программы
В этом коде выполняется операция чтения и вывода массива, размеченного с помощью адресов, используя адресную арифметику.
- Объявлены две переменные типа int: n и m. Они используются для определения размеров массива.
- Массив mas инициализируется как указатель на первый элемент массива размером n*m.
- С помощью функции calloc выделяется память под массив размером n*m.
- Используя два вложенных цикла, в массив читаются n*m значений.
- С помощью двух вложенных циклов, элементы массива выводятся на экран через пробел.
- В конце программы возвращается 0, что означает успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д