{
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 |
Дата: 2019-07-30, просмотров: 246.