Нужен пример работы с динамической памятью - 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().