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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!