Int GetRandom(int Min, int Max)



{

double res=(double)rand()/(RAND_MAX+1) * (Max-Min) +Min;

return (int)res;

}

 

Для того чтобы эта функция при каждом новом запуске генерировала новые псевдослучайные числа, необходимо один раз в главной функции инициализировать датчик псевдослучайных чисел, например, так:

srand((unsigned)time(NULL));

 

И вопрос на засыпку по этой функции: зачем сначала используется приведение к типу double, а потом к типу  int? А ежели эти приведения типов убрать, шо буде?

 

Шаг 3. И уже самостоятельная работа!

Во всех вариантах заданий предполагается неукоснительное соблюдение следующих требований:

1. Программа должна быть написана таким чудодейственным образом, чтобы можно было в течение одного ее запуска выполнить произвольное число расчетов при новых данных. Попросту говоря, необходимо добавить самый внешний бесконечный цикл, выход из которого должен осуществляться по вежливому запросу.

2. Число элементов массива (ов) программа должна запрашивать у пользователя и контролировать корректность его ввода.

3. Значения элементов массивов должны генерироваться как псевдослучайные числа из диапазона, оговоренного в задании.

4. Исходные и обработанные массивы должны выводиться в самом что ни на есть красивом виде и при этом удобном для контроля корректности выполнения программы. Для вещественных данных число значащих цифр дробной части ограничить 2-3.

5. При разработке программы на полную катушку использовать собственные функции, каждая из оных должна реализовать четко очерченную последовательность действий, как-то: генерация псевдослучайного диапазона из заданного диапазона, генерация значений элементов массива, вывод массива на экран и т.д. и.т.п.

6. Все функции должны получать все необходимые им исходные данные и возвращать результаты посредством параметров (или имени функции). Вы должны показать свое умение грамотно использовать параметры разных видов: параметры-значения, параметры-ссылки, константные параметры и т.д.

7. Магические числа, т.е. непосредственно заданные числовые константы, следует именовать и далее использовать только именованные константы. Например, вместо int Vec[100]; следует писать const int NMax=100;  int Vec[NMax]. Вместе с тем, не стоит и скатываться до идиотизма, например, вводить константы для цифр 0 или 1, широко используемых в любой программулине.

 

Алгоритмы сортировок и другие ценные сведения можно найти в Приложениях (см. оглавление), Интернете и в др. местах.

 

 

№ вар. Задание Тип элементов массива (ов) Диапазон значений элементов массива
1. Сортировка массива включением float -1e-3 .. +1е+3
2. Сортировка массива с помощью прямого обмена (пузырьковый метод) double -100 .. 50
3. Инвертирование массива, т.е. перестановка его элементов в обратном порядке int 100 ..120
4. Сортировка Шелла float -0.1 .. 0.2
5. Сортировка массива с помощью прямого выбора double -1e-3 .. +1е+3
6. Вставка нового массива в заданную позицию существующего массива int -200 .. 0
7. Удаление части массива float -1e-3 .. +1е+3
8. Вставка одного массива в другой double -100 .. 50
9. Поиск заданного подмассива в массиве int 100 ..120
10. Подсчет числа вхождений подмассива в массив int 10 .. 20
11. Поиск в массиве повторяющихся значений и перенос их в другой (новый) массив int 100 .. 120
12. Исключить из заданного массива одинаковые элементы (сжать массив) int -10 .. -15
13. Отсортировать значения элементов двумерного массива (матрицы) в порядке возрастания. Например, если исходный массив выглядит так: 3 6 1 0 12 -6 7 3 то отсортированный должен иметь следующий пристойный вид: 12 7 6 3 3 1 0 -6 double -10 .. 20
14. Ввести массив из N чисел и найти максимальное значение среди элементов, значения которых в массиве встречаются более одного раза. Например, в массиве 2,3,4,5,5,4,3,10 таким максимальным значением является 5 int 10 .. 15

 


Поиск экстремумов с ограничениями или «Брачное агенство»

Если отладка - процесс удаления ошибок, то программирование должно быть процессом их внесения

           Закон Мерфи

Цель работы – освоить приемы поиска экстремальных значений в массивах структур при наличии дополнительных ограничений и условий (4 час.).

Постановка задачи

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

Таблица 1

Клиенты брачного агентства

Имя Пол Рост Возраст Характер Цвет кожи Доход Число разводов
Джон м 150 20 Пакостный Белый 198 0
Барбара ж 178 23 Зловредный Черный 567 5
Майкл м 165 45 Нежный Желтый 987 2
Инесса ж 189 43 Отвратительный Белый 3544 5
Стивен м 201 21 Хороший Желтый 1234 4
Деннис м 172 18 Ласковый Черный 987 3
Смит м 168 19 Твердый Черный 7463 1
Джоан ж 153 33 Пакостный Белый 873 2
Джейла ж 178 44 Зловредный Желтый 368 2
Рейчел ж 178 23 Зловредный Черный 567 7
Лайла ж 153 33 Пакостный Коричневый 873 3
Тильда ж 166 43 Отвратительный Белый 3454 7
Льюис м 168 23 Твердый Белый 463 5
Керол ж 165 32 Нежный Желтый 876 4
Гликерия ж 198 44 Пакостный Белый 2340 5
Пафнутий м 178 25 Отвратительный Белый 567 2
Зазноба ж 189 43 Пакостный Желтый 999 0
Отморозок м 187 25 Отвратительный Черный 657 2

 

Характеры клиентов разбиты на категории в соответствии с табл. 2 для того, чтобы можно было не только указывать в запросах конкретный характер, но и делать более общие запросы путем указания категории характера, в том числе и в числовой форме. Подобным образом введены категории клиентов по величине доходов и цвету кожи (см. табл.3 и табл.4).

Таблица 2


Дата добавления: 2018-02-18; просмотров: 653; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!