Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Разработка текста программы





#include <stdio.h> #include <time.h> #include <stdlib.h> В файле stdio.h описания функций стандартного ввода-вывода, в файле stdlib.h - функции генерации случайных чисел. В описании функции randomize() мы нашли примечание, что она является макросом, который обращается к функции time(), следовательно, перед файлом stdlib.h в программу должен быть включен файл time.h.

Также включаем файл 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: 538; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.007 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию