На экран выводится "мусор" - C (СИ)

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

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

Вместо создаваемого массива выводит на экран "мусор" какой-то. Не пойму, что не так...
Листинг программы
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include<iostream>
  4. int main(void)
  5. { int n, m, i, j;
  6. printf("Vvedite razmer massiva:");
  7. scanf("%d%d", &n, &m);
  8. int**arr = new int *[n];
  9. for( i=0; i<n; i++)
  10. arr[i] = new int [m];
  11. printf("Vvedite massiv\n\n");
  12. for(i=0; i<n; i++)
  13. { for(j=0; j<m; j++)
  14. {
  15. printf("arr[%d][%d]=", i, j);
  16. scanf("%d", (*(arr+i)+j));
  17. printf("\n%d\n", (*(arr+i)+j));}}
  18. printf("Vi vveli %d chisel(la)\n\n", i*j);
  19. for(i=0; i<n; i++)
  20. { for(j=0; j<m; j++)
  21. {
  22. printf("%9d", (*(arr+i)+j));}
  23. printf("\n");}
  24. _getch();
  25. }

Решение задачи: «На экран выводится "мусор"»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4.  
  5. int main(void)
  6. {  
  7.     int n, m, i, j=0;
  8.     int **arr;
  9.    
  10.     printf("Vvedite razmer: ");
  11.     scanf("%d%d", &n, &m);
  12.     arr = malloc(n * sizeof(int*));    
  13.  
  14.     printf("Massiv\n\n");
  15.     for(i=0; i < n; i++)
  16.     {
  17.         *(arr+i) = malloc(m * sizeof(int));
  18.         for(j=0; j < m; j++)
  19.         {
  20.             printf("arr[%d][%d]=", i, j);
  21.             scanf("%d", &arr[i][j]);
  22.             printf("\n%d\n", arr[i][j]);
  23.         }
  24.         printf("stroka %d vvedena\n", i + 1);
  25.     }
  26.  
  27.     printf("\n\nSpasibo!\n");
  28.     printf("Vi vveli %d chisel(la)\n\n", i * j);
  29.     for(i=0; i < n; i++)
  30.     {
  31.         for(j=0; j < m; j++)
  32.             printf("%4d", arr[i][j]);
  33.         printf("\n");
  34.         free(arr[i]);
  35.     }
  36.     free(arr);
  37.    
  38.     _getch();
  39.     return 0;
  40. }

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

В данном коде:

  1. Объявлены переменные:
    • n, m, i, j - целочисленные переменные для работы с массивом;
    • arr - динамический массив (массив указателей на целочисленные значения), выделенный с помощью функции malloc.
  2. Запрошен размер массива с помощью функции scanf (вводятся два целых числа).
  3. Выделена память под каждый элемент массива arr с помощью функции malloc (для каждого элемента массива arr выделяется память под массив m целых чисел).
  4. Выведен шаблон для ввода чисел (строка arr[%d][%d]=).
  5. Введены числа для каждого элемента массива arr с помощью функции scanf.
  6. Выведено содержимое каждого элемента массива arr с помощью функции printf.
  7. Выведена строка, сообщающая об успешном вводе чисел для очередного элемента массива.
  8. После ввода всех чисел выводится общее количество введенных чисел (произведение количества строк и столбцов).
  9. Выводится размер массива arr с помощью функции printf.
  10. Бесплатно освобождается память, выделенная под каждый элемент массива arr, с помощью функции free.
  11. Выполняется функция _getch, предназначенная для приостановки работы программы до нажатия клавиши.
  12. Возвращается 0, что означает успешное завершение работы программы.

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


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

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

9   голосов , оценка 4.333 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы