Преобразовать статический массив в динамический - C (СИ)

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

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

Доброго всем и всего, да и побольше! Пытаюсь понять что такое динамические массивы в Си, и как их готовят. Но что то не могу найти толковой информации. Теорию нашел, функции знаю, но как их применить - нет. Видел примеры переделки статических массивов в динамический, но там просят переделать достаточно сложный код, и черт ногу сломит в том коде. Может кто то сказать, или полностью переделать в следующем коде статический массив в динамический? Чтобы наглядно посмотрел и понял отличия. А то чет как то башка не освобождает память занятую статическими массивами
Листинг программы
  1. // программа распечатывает на экране квадратную матрицу заданного пользоветелем размера
  2. #include <stdio.h>
  3. // ну тут есесна этого в дин. массиве быть не должно, можно заменить на рандомайзер
  4. int Mas[9][9]=
  5. {
  6. { 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
  7. { 0 , 2 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
  8. { 0 , 0 , 3 , 0 , 0 , 0 , 0 , 0 , 0 },
  9. { 0 , 0 , 0 , 4 , 0 , 0 , 0 , 0 , 0 },
  10. { 0 , 0 , 0 , 0 , 5 , 0 , 0 , 0 , 0 },
  11. { 0 , 0 , 0 , 0 , 0 , 6 , 0 , 0 , 0 },
  12. { 0 , 0 , 0 , 0 , 0 , 0 , 7 , 0 , 0 },
  13. { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 8 , 0 },
  14. { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 9 }
  15. };
  16. int main(void)
  17. {
  18. int i, j, n;
  19. printf("Enter the size of square matrix (not more then 9): ");
  20. scanf("%d", &n);
  21. // вывод на экран квадратной матрицы заданного размера (размер вводится пользователем выше)
  22. for (i=0; i<n; i++)
  23. {
  24. for (j=0; j<n; j++)
  25. {
  26. printf("%2d", Mas[i][j]);
  27. }
  28. printf("\n");
  29. }
  30. system("pause");
  31. }

Решение задачи: «Преобразовать статический массив в динамический»

textual
Листинг программы
  1. int size;
  2. cout << "Enter size of array"; //размер массива
  3. cin >> size;
  4. int **Mas=new int *[size]; //указатели на строки
  5. for(int i=0;i<size;i++)
  6.    Mas[i]=new int[size]; //формирование строк
  7. for (int i=0; i<size; i++)
  8.     for (int j=0; j<size; j++)
  9.             Mas[i][j]=rand(); //рандомное заполнение массива
  10. //действия с массивом
  11. for (int i = 0; i < size; i++) //освобождение памяти
  12. {
  13.    delete []Mas[i];
  14. }
  15.    delete []Mas;

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

  1. Программа запрашивает у пользователя размер массива и сохраняет его в переменную size.
  2. Программа выделяет память под массив указателей на int, используя оператор new, и сохраняет его в переменную Mas.
  3. Затем программа, используя цикл for, выделяет память под каждый элемент массива, используя оператор new, и сохраняет его в соответствующий элемент массива Mas.
  4. Далее программа заполняет массив случайными числами, используя два вложенных цикла for и оператор rand().
  5. После выполнения всех операций с массивом, программа освобождает память, используя два вложенных цикла for и функцию delete [].
  6. Наконец, программа освобождает память под массив указателей на int, используя функцию delete [].

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


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

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

10   голосов , оценка 3.9 из 5

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

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

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