Нужен пример работы с динамической памятью - C (СИ)

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

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

Помогите пожалуйста сделать память под массив выделять динамически. Организовать в виде функций сохранение массива в файл и загрузку из файла. 1. покажите простые примеры пожалуйста работы с дин памятью и загрузку выгрузку. 2. массив с которым нужно это сделать
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. void InputArray(double *a, unsigned n);
  4. void PrintArray(double *a, unsigned n);
  5. bool Decreasing(double *a, unsigned n);
  6. int main (void)
  7. {
  8. double a[20];int n;
  9. while( n < 3 || n > 20 )
  10. {
  11. printf("\tInput size of Array : ");
  12. scanf("%d",&n);
  13. }
  14. InputArray( a, n);
  15. PrintArray( a, n);
  16. system("pause");//Ждать нажатия клавиши
  17. if(!Decreasing( a, n))
  18. printf("\nThe Array is not decreasing\n");
  19. else
  20. printf("\nThe Array is decreasing\n");
  21. system("pause");//Ждать нажатия клавиши
  22. return 0;
  23. }
  24. void InputArray(double a[], unsigned n)
  25. {
  26. srand(5);
  27. printf("\n\tArray:\n ");
  28. for(unsigned i = 0; i < n; i++)
  29. {
  30. a[i]=rand()%100;
  31. }
  32. }
  33. void PrintArray (double a[],unsigned n)
  34. {
  35. for(unsigned i = 0; i < n; i++)
  36. printf("\na[%02d] = %lf\n",i + 1, a[i]);
  37. }
  38. bool Decreasing(double a [], unsigned n)
  39. {
  40. bool Flag = true;
  41. double current = a[0];
  42. for(unsigned j = 1; j < n && Flag;j++)
  43. {
  44. if(current <= a[j])
  45. current = a[j];
  46. else
  47. Flag = false;
  48. }
  49. return Flag;
  50. }

Решение задачи: «Нужен пример работы с динамической памятью»

textual
Листинг программы
  1. int main (void)
  2. {    
  3.      
  4.         double a[20];int n;
  5.     a = (double *) malloc( n * sizeof(double) );   //тут надо    
  6.     while( n < 3 || n > 20 )
  7.     {
  8.         printf("\tInput size of Array : ");
  9.         scanf("%d",&n);
  10.     }
  11.     а = (double *) malloc( n * sizeof(double) ); // или тут?

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

В данном коде выполняется следующие действия:

  1. Объявление переменных:
    • double a[20]; - массив типа double, содержащий 20 элементов.
    • int n; - переменная для хранения размера массива.
  2. Выделение памяти под массив с помощью функции malloc(). Но здесь есть условие: если размер массива n меньше 3 или больше 20, то выделение памяти будет происходить повторно до тех пор, пока пользователь не введет корректный размер массива в диапазоне от 3 до 20.
  3. Ввод размера массива с помощью функции scanf().
  4. Выделение памяти под массив с помощью функции malloc(). Таким образом, правильный ответ на вопрос: Нужен пример работы с динамической памятью будет следующим:
    • Объявление переменных.
    • Выделение памяти под массив с помощью функции malloc().
    • Ввод размера массива с помощью функции scanf().
    • Выделение памяти под массив с помощью функции malloc().

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


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

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

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

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

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

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