На экран выводится "мусор" - C (СИ)
Формулировка задачи:
Вместо создаваемого массива выводит на экран "мусор" какой-то. Не пойму, что не так...
#include<stdio.h> #include<conio.h> #include<iostream> int main(void) { int n, m, i, j; printf("Vvedite razmer massiva:"); scanf("%d%d", &n, &m); int**arr = new int *[n]; for( i=0; i<n; i++) arr[i] = new int [m]; printf("Vvedite massiv\n\n"); for(i=0; i<n; i++) { for(j=0; j<m; j++) { printf("arr[%d][%d]=", i, j); scanf("%d", (*(arr+i)+j)); printf("\n%d\n", (*(arr+i)+j));}} printf("Vi vveli %d chisel(la)\n\n", i*j); for(i=0; i<n; i++) { for(j=0; j<m; j++) { printf("%9d", (*(arr+i)+j));} printf("\n");} _getch(); }
Решение задачи: «На экран выводится "мусор"»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <conio.h> int main(void) { int n, m, i, j=0; int **arr; printf("Vvedite razmer: "); scanf("%d%d", &n, &m); arr = malloc(n * sizeof(int*)); printf("Massiv\n\n"); for(i=0; i < n; i++) { *(arr+i) = malloc(m * sizeof(int)); for(j=0; j < m; j++) { printf("arr[%d][%d]=", i, j); scanf("%d", &arr[i][j]); printf("\n%d\n", arr[i][j]); } printf("stroka %d vvedena\n", i + 1); } printf("\n\nSpasibo!\n"); printf("Vi vveli %d chisel(la)\n\n", i * j); for(i=0; i < n; i++) { for(j=0; j < m; j++) printf("%4d", arr[i][j]); printf("\n"); free(arr[i]); } free(arr); _getch(); return 0; }
Объяснение кода листинга программы
В данном коде:
- Объявлены переменные:
- n, m, i, j - целочисленные переменные для работы с массивом;
- arr - динамический массив (массив указателей на целочисленные значения), выделенный с помощью функции malloc.
- Запрошен размер массива с помощью функции scanf (вводятся два целых числа).
- Выделена память под каждый элемент массива arr с помощью функции malloc (для каждого элемента массива arr выделяется память под массив m целых чисел).
- Выведен шаблон для ввода чисел (строка
arr[%d][%d]=
). - Введены числа для каждого элемента массива arr с помощью функции scanf.
- Выведено содержимое каждого элемента массива arr с помощью функции printf.
- Выведена строка, сообщающая об успешном вводе чисел для очередного элемента массива.
- После ввода всех чисел выводится общее количество введенных чисел (произведение количества строк и столбцов).
- Выводится размер массива arr с помощью функции printf.
- Бесплатно освобождается память, выделенная под каждый элемент массива arr, с помощью функции free.
- Выполняется функция _getch, предназначенная для приостановки работы программы до нажатия клавиши.
- Возвращается 0, что означает успешное завершение работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д