На экран выводится "мусор" - 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, что означает успешное завершение работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д