Нужен пример работы с динамической памятью - C (СИ)
Формулировка задачи:
Помогите пожалуйста сделать память под массив выделять динамически.
Организовать в виде функций сохранение массива в файл и загрузку из файла.
1. покажите простые примеры пожалуйста работы с дин памятью и загрузку выгрузку.
2. массив с которым нужно это сделать
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- void InputArray(double *a, unsigned n);
- void PrintArray(double *a, unsigned n);
- bool Decreasing(double *a, unsigned n);
- int main (void)
- {
- double a[20];int n;
- while( n < 3 || n > 20 )
- {
- printf("\tInput size of Array : ");
- scanf("%d",&n);
- }
- InputArray( a, n);
- PrintArray( a, n);
- system("pause");//Ждать нажатия клавиши
- if(!Decreasing( a, n))
- printf("\nThe Array is not decreasing\n");
- else
- printf("\nThe Array is decreasing\n");
- system("pause");//Ждать нажатия клавиши
- return 0;
- }
- void InputArray(double a[], unsigned n)
- {
- srand(5);
- printf("\n\tArray:\n ");
- for(unsigned i = 0; i < n; i++)
- {
- a[i]=rand()%100;
- }
- }
- void PrintArray (double a[],unsigned n)
- {
- for(unsigned i = 0; i < n; i++)
- printf("\na[%02d] = %lf\n",i + 1, a[i]);
- }
- bool Decreasing(double a [], unsigned n)
- {
- bool Flag = true;
- double current = a[0];
- for(unsigned j = 1; j < n && Flag;j++)
- {
- if(current <= a[j])
- current = a[j];
- else
- Flag = false;
- }
- return Flag;
- }
Решение задачи: «Нужен пример работы с динамической памятью»
textual
Листинг программы
- int main (void)
- {
- double a[20];int n;
- a = (double *) malloc( n * sizeof(double) ); //тут надо
- while( n < 3 || n > 20 )
- {
- printf("\tInput size of Array : ");
- scanf("%d",&n);
- }
- а = (double *) malloc( n * sizeof(double) ); // или тут?
Объяснение кода листинга программы
В данном коде выполняется следующие действия:
- Объявление переменных:
double a[20];
- массив типа double, содержащий 20 элементов.int n;
- переменная для хранения размера массива.
- Выделение памяти под массив с помощью функции
malloc()
. Но здесь есть условие: если размер массиваn
меньше 3 или больше 20, то выделение памяти будет происходить повторно до тех пор, пока пользователь не введет корректный размер массива в диапазоне от 3 до 20. - Ввод размера массива с помощью функции
scanf()
. - Выделение памяти под массив с помощью функции
malloc()
. Таким образом, правильный ответ на вопрос:Нужен пример работы с динамической памятью
будет следующим:- Объявление переменных.
- Выделение памяти под массив с помощью функции
malloc()
. - Ввод размера массива с помощью функции
scanf()
. - Выделение памяти под массив с помощью функции
malloc()
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д