![]() Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
![]() Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
![]() |
Разработка текста программы ⇐ ПредыдущаяСтр 3 из 3
Также включаем файл malloc.h, в котором содержатся описания функций динамического выделения/освобождения памяти: #include <alloc.h>Начинаем главную функцию и объявляем в ней переменные программы по п.5.2. Кодовая часть программы начинается с инициализации датчика случайных чисел и получения случайного числа для размера массива: randomize(); size=random(151)+50;Функция rand возвращает нам число в диапазоне 0 - 150, прибавлением к нему 50 мы переводим его в диапазон 50 - 200. Полученный размер массива сразу выводим на экран: printf("size=%d\n",size);Обращаемся к функции выделения памяти: Ar=(int far *)malloc(size*sizeof(int));Функция malloc() требует параметр - размер запрошенной памяти в байтах. Переменная size - это количество элементов в массиве; для задания размера памяти в байтах умножаем ее на размер одного элемента. Функция malloc() возвращает нетипизированный указатель, мы преобразуем его в указатель на int и записываем в переменную Ar. Далее организуем цикл перебора массива: for (Cr=Ar; Cr<Ar+size; Cr++) {В начальных установках цикла мы записываем в переменную Cr адрес начала массива, т.е. Cr показывает на элемент с индексом 0. В конце каждой итерации Cr увеличивается на 1, т.е. показывает на следующий элемент массива. Последняя итерация происходит при значении Cr=Ar+size-1, т.е. Cr будет показывать на последний элемент. В каждой итерации мы обращаемся к текущему элементу массива как *Cr, т.е. обращаемся к тому, на что показывает указатель Cr. Далее идет заголовок цикла перебора массива, который организуется та же, как предыдущий, но в начальных установках мы еще присваиваемо начальное значение счетчику nn. Там, где нам требуется запомнить начало отрицательной последовательности, мы просто сохраняем текущее значение указателя Cr в переменной-указателе Ir. Внутренний цикл, в котором обрабатывается отрицательная последовательность: for (av/=nn; Ir<Cr; Ir++) if (*Ir<av) *Ir=av;Начальные установки этого цикла - только усреднение значения в av, переменная Ir уже содержит в себе указатель на первый элемент отрицательной последовательности. В конце каждой итерации Ir увеличивается на 1, т.е. показывает на следующий элемент последовательности (обращение к этому элементу - *Ir). Последняя итерация происходит при значении Ir=Cr-1, поскольку Cr показывает на первый положительный элемент за отрицательной последовательностью. Остаток программы повторяет предыдущие фрагменты. Предпоследний оператор - обращение к функции free() для освобождения памяти, которая была выделена функцией malloc(): free(Ar); Date: 2015-12-12; view: 589; Нарушение авторских прав |