Функция стандартной библиотеки языка С (stdlib.h) rand() генерирует псевдослучайное число на интервале значений от 0 до RAND MAX (константа, обычно 32767).

Презентация:



Advertisements
Похожие презентации
Одномерный массив. Цель урока: познакомить учащихся с понятием одномерный массив Задачи: дать определение массива дать представление: об описании массива.
Advertisements

ПРОЦЕДУРЫ И ФУНКЦИИ CPascal Подпрограмма – группа операторов реализующая законченный алгоритм и оформленная как самостоятельная синтаксическая единица.
Массивы 9 класс. Основные теоретические сведения Примеры решения задач.
Одномерные массивы. Одномерный массив Статический массив – упорядоченная последовательность фиксированного количества переменных одного типа, имеющая.
МАССИВЫ В практической деятельности человека часто используются таблицы и списки. Например: Список учеников в журнале; Список среднесуточной температуры.
Работа с одномерными массивами Урок информатики 9 кл.
Сортировка одномерного массива Учитель информатики Александрова Т.П.
МАССИВЫ. Сортировка Задачи, наиболее часто встающих перед программистами, это задачи сортировки и поиска. Данные задачи применяются как сами по себе, так.
При решении многих задач приходится обрабатывать большое количество однотипных данных. Для хранения этих данных пришлось бы вводить большое количество.
ЕДИННЫЙ ГОСУДАРСТВЕННЫЙ ЭКЗАМЕН Часть С демо-варианта 2009.
Сортировка методом пузырька, выбором (Pascal) Кокарева Светлана Ивановна.
Подпрограммы 1.Принцип модульности 2.Область действия переменных 3.Параметры подпрограмм 4.Модули.
ЕГЭ информатика Алгоритмизация и программирование Консультация 4.
- это структура данных, представляющая собой упорядоченную совокупность значений одного типа.
Тема урока: Одномерные массивы. - Где в жизни мы можем встретиться с таблицами?
Упорядоченный набор данных одного типа называется массивом. Каждый элемент массива описывается в общем виде как A[i], где A – имя массива, i – номер элемента.
Массивы Вариант 1 Program upr1; Var s,a:real; I: integer; Begin S:=0; For I:=1 to 10 do Begin Writeln (введите очередное число'); Readln(a); S: =s+a; End;
Работа с массивами Программирование в ЕГЭ. Что надо знать о массивах? Матрица – двумерный массив. Элементы массива могут иметь любой тип. Массив определяют.
Массивы Материалы к урокам по программированию. МАССИВ это УПОРЯДОЧЕННАЯ последовательность данных ОДНОГО ТИПА. Массивы относятся к структурированным.
Например: семейство бабочек; Понятие одномерного массива поле цветов;
Транксрипт:

Функция стандартной библиотеки языка С (stdlib.h) rand() генерирует псевдослучайное число на интервале значений от 0 до RAND_MAX (константа, обычно 32767). Чтобы получить случайные числа от 0 до 9 – используется получение остатка от деления rand() % 10. Если нам нужны числа от 1 (а не от 0) до 9, то можно прибавить единицу -- rand() % 9 + 1, т.е. генерируется случайное число от 0 до 8, и после прибавления 1 оно превращается в случайное число от 1 до 9. Для получения при каждом вызове rand() различных случайных последовательностей надо сначала вызвать функцию srand(), которая в качестве аргумента просит число. И по этому числу уже будет генерироваться случайное число функцией rand(): srand(time(NULL)); chislo = rand(); CPascal Для моделирования ситуаций, когда требуется, чтобы результат работы программы был случайным в определенных пределах, во многих языках программирования присутствуют встроенные функции, код которых выдает случайные числа. На самом деле числа не совсем случайные, а псевдослучайные, т.к любая программа представляет собой детерминированный алгоритм и с его помощью реализовать случайность невозможно. Алгоритмы реализации псевдослучайных чисел оцениваются по длине последовательности, после которой последовательность начинает повторяться. 1 Функции генерации случайных последовательностей Для генерации псевдослучайных чисел в заданных диапазонах используется функция random. Перед ее использованием обычно выполняется процедура инициализации датчика случайных чисел - randomize; иначе функция при вызове всегда будет выдавать одну и ту же последовательность чисел. Randomize задает начальное значение последовательности, от которого вычисляются все последующие. При каждом запуске программы это значение будет разным, а значит и результат работы функции random будет различным. Функция random генерирует случайное число в диапазоне от 0 (включительно) до единицы. Если в скобках указан аргумент, то от 0 до значения указанного в скобках (не включая само значение). ВМП

CPascal 2 Функции генерации случайных последовательностей Выражение random (10) генерировать любое число в диапазоне [0, 10). Для получения значения в другом диапазоне (не от нуля, например, от -100 до 100, то надо записать такое выражение: random (200) – 100. В результате, сначала будет получено число из диапазона [0, 199], а затем из него будет вычтена сотня. И если случайное число было меньше 100, то результат выражения будет отрицательным.) В примере программы сначала с помощью процедуры randomize инициализируется датчик случайных чисел. Затем переменной n присваивается случайное значение в диапазоне [5, 12). Значение переменной n используется для определения количества итераций цикла for. В цикле for генерируются случайные числа в диапазоне [0, 50) и выводятся на экран. var n, i, x: integer; begin randomize; n := random (7) + 5; for i := 1 to n do begin x := random (100) - 50; write (x:5) end; readln end. Пример: #include int main() { int rand_chislo; srand(time(NULL)); for (int i = 0; i <5; i++ ) { rand_chislo = 2 + rand() %7; printf (" rand_chislo =%d ", rand_chislo); } return 0; } В оболочке программирования Borland С/C++ в виде макросов реализованы random(x) и randomize() аналогичные Pascal. Пример: #include int main(void) { randomize(); /* задаёт случайные начальные значения при запуске функции random() */ printf("Случайное число в диапазоне от 0 до 99: ", random(100)); return 0; } Будем использовать random для заполнения массивов. ВМП

Формат описания Функции: [класс] [(тип 1 имя_формального_параметра 1, …, типN имя_формального_параметраN)] [throw (исключения)] { } Формат вызова Функции: ([фактич_параметр 1, …, фактич_параметры]); // Сортировка мас. целых чисел выборочнымым. методом #include #define sz 5 // размерность массива void main () { int a[sz]; // массив целых чисел int i; // элем., от которого ведется поиск мин. элем. int min; // мин. элем. в части мас. от i до конца мас. int j; // элемента сравниваемого с мин. int buf; // буфер, исп. при обмене элементов массива int k; // индекс для ввода и вывода printf ("\n Введите в одной строке %i", sz); printf (" целых чисел и нажмите Enter \n"); printf ("-> "); for (k=0; k<sz; k++) scanf ("%i", &a[k]); // Сортировка for (i = 0; i < sz-1; i++) { // Поиск мин. элем. в части мас. от a[i] до a[sz] min = i; for (j = i+1; j < sz; j++) if (a[j] < a[min]) min = j; // Меняем местами a[min] и a[i] buf = a[i]; a[i] = a[min]; a[min] = buf; } // Цикл сортировки закончен // Вывод отсортированного массива printf ("Отсортированный массив\n"); for (k = 0; k<sz; k++) printf ("%i ", a[k]); } CC Практическое занятие : сортировка и слияние двух массивов (на языке С) используя функции выборочнымымой сортировки и слияния целочисленных массивов ВМП 3 МАССИВЫ. Сортировка Создать функцию выборочнымымой сортировки

// Сортировка мас. целых чисел выборочнымым. методом #include #define sz 5 // размерность массива void main () { int a[sz]; // массив целых чисел int i; // элем., от которого ведется поиск мин. элем. int min; // мин. элем. в части мас. от i до конца мас. int j; // элемента сравниваемого с мин. int buf; // буфер, исп. при обмене элементов массива int k; // индекс для ввода и вывода printf ("\n Введите в одной строке %i", sz); printf (" целых чисел и нажмите Enter \n"); printf ("-> "); for (k=0; k<sz; k++) scanf ("%i", &a[k]); // Сортировка for (i = 0; i < sz-1; i++) { // Поиск мин. элем. в части мас. от a[i] до a[sz] min = i; for (j = i+1; j < sz; j++) if (a[j] < a[min]) min = j; // Меняем местами a[min] и a[i] buf = a[i]; a[i] = a[min]; a[min] = buf; } // Цикл сортировки закончен // Вывод отсортированного массива printf ("Отсортированный массив\n"); for (k = 0; k<sz; k++) printf ("%i ", a[k]); } CC Практическое занятие : сортировка и слияние двух массивов (на языке С) используя функции выборочнымымой сортировки и слияния целочисленных массивов ВМП 4 МАССИВЫ. Сортировка Создать функцию выборочнымымой сортировки void direct_sort (int a[sz]) // Функция выборочнымымой сортировки массива целых чисел по возрастанию { int i; // элем., от которого ведется поиск мин. элем. int numin; // минимального элемента int j; // элемента сравниваемого с минимальным int buf; // буфер, исп. при обмене элементов массива for (i = 0; i < sz-1; i++) { // Поиск мин. элемента в части массива от a[i] до a[sz] numin = i; for (j = i+1; j < sz; j++) if (a[j] < a[numin]) numin = j; // Меняем местами a[numin] и a[i] buf = a[i]; a[i] = a[numin]; a[numin] = buf; } // цикл сортировки закончен }

Формат описания Функции: [класс] [(тип 1 имя_формального_параметра 1, …, типN имя_формального_параметраN)] [throw (исключения)] { } Формат вызова Функции: ([фактич_параметр 1, …, фактич_параметры]); #include #define SZ 5 //Размер исходных массивов void main() { int a[SZ], b[SZ]; // исходные массивы int c[SZ*2]; // массив-результат int k,i,m; // индексы массивов a, b и c printf ("Слияние двух упорядоченных массивов в один,\n"); printf ("ввод элементов через пробел, завершение: Enter\n"); printf ("\n Введите первый массив %i -> ", SZ); for (k=0; k<SZ; k++) scanf ("%i", &a[k]); printf ("Введите второй массив %i -> ", SZ); for (i=0; i<SZ; i++) scanf ("%i", &b[i]); k=i=m=0; do { if (a[k] < b[i]) c[m++] = a[k++]; else if (a[k] > b[i]) c[m++] = b[i++]; else { c[m++] = a[k++]; c[m++] = b[i++]; } } while ((k < SZ) && (i < SZ)); while (k < SZ) /*есть элем. массива А не переписанные в С*/ c[m++] = a[k++]; while (i < SZ) /* есть элементы B не переписанные в С */ c[m++] = b[i++]; printf("Массив-результат: \n"); for (i=0; i<2*SZ; i++) printf ("%i ", c[i]); printf("\n Для завершения работы нажмите Enter\n"); getch(); } CC Практическое занятие : сортировка и слияние двух массивов (на языке С) используя функции выборочнымымой сортировки и слияния целочисленных массивов 5 МАССИВЫ. Сортировка Создать функцию слияния отсортированных массивов ВМП

#include // Слияние двух упорядоченных массивов #include #define SZ 5 //Размер исходных массивов void main() { int a[SZ], b[SZ]; // исходные массивы int c[SZ*2]; // массив-результат int k,i,m; // индексы массивов a, b и c printf ("Слияние двух упорядоченных массивов в один,\n"); printf ("ввод элементов через пробел, завершение: Enter\n"); printf ("\n Введите первый массив %i -> ", SZ); for (k=0; k<SZ; k++) scanf ("%i", &a[k]); printf ("Введите второй массив %i -> ", SZ); for (i=0; i<SZ; i++) scanf ("%i", &b[i]); k=i=m=0; do { if (a[k] < b[i]) c[m++] = a[k++]; else if (a[k] > b[i]) c[m++] = b[i++]; else { c[m++] = a[k++]; c[m++] = b[i++]; } } while ((k < SZ) && (i < SZ)); while (k < SZ) /*есть элем. массива А не переписанные в С*/ c[m++] = a[k++]; while (i < SZ) /* есть элементы B не переписанные в С */ c[m++] = b[i++]; printf("Массив-результат: \n"); for (i=0; i<2*SZ; i++) printf ("%i ", c[i]); printf("\n Для завершения работы нажмите Enter\n"); getch(); } CC Практическое занятие : сортировка и слияние двух массивов (на языке С) используя функции выборочнымымой сортировки и слияния целочисленных массивов ВМП 6 МАССИВЫ. Сортировка Создать функцию слияния отсортированных массивов void mas_split (int a[sz], int b[sz], int c[sz*2]) /* Функция слияния двух упорядоченных по возрастанию массивов целых чисел в один */ { int k,i,m; // индексы массивов a, b и c k=i=m=0; do { if (a[k] < b[i]) c[m++] = a[k++]; else if (a[k] > b[i]) c[m++] = b[i++]; else { c[m++]=a[k++]; c[m++]=b[i++];} } while ((k < sz) && (i < sz)); while (k<sz) // есть элем. мас. a не переписанные в c c[m++] = a[k++]; while (i < sz) // есть элементы b не переписанные в c c[m++] = b[i++]; }

void mas_split (int a[sz], int b[sz], int c[sz*2]) /* Функция слияние двух упорядоченных по возрастанию массивов целых чисел в один */ { int k,i,m; // индексы массивов a, b и c k=i=m=0; do { if (a[k] < b[i]) c[m++] = a[k++]; else if (a[k] > b[i]) c[m++] = b[i++]; else { c[m++]=a[k++]; c[m++]=b[i++];} } while ((k < sz) && (i < sz)); while (k<sz) // есть элем. мас. a не переписанные в c c[m++] = a[k++]; while (i < sz) // есть элементы b не переписанные в c c[m++] = b[i++]; } CС Практическое занятие : сортировка и слияние двух массивов (на языке С) используя функции выборочнымымой сортировки и слияния целочисленных массивов Функции: void direct_sort (int a[sz]) // Функция сортировки массива целых чисел по возрастанию { int i; // элем., от которого ведется поиск мин. элем. int numin; // минимального элемента int j; // элемента сравниваемого с минимальным int buf; // буфер, исп. при обмене элементов массива for (i = 0; i < sz-1; i++) { // Поиск мин. элемента в части массива от a[i] до a[sz] numin = i; for (j = i+1; j < sz; j++) if (a[j] < a[numin]) numin = j; // Меняем местами a[numin] и a[i] buf = a[i]; a[i] = a[numin]; a[numin] = buf; } // цикл сортировки закончен } 7 МАССИВЫ. Сортировка ВМП

void main() /* Ввод двух целочисленных массивов, сортировка обеих массивов и слияние этих массивов в третий массив */ { int a[sz], b[sz]; // исходные массивы целых чисел int c[sz*2]; // массив-результат int d, l, n; // индексы массивов A, B и C randomize(); printf (" Сортировка и слияние двух упорядоченных по возрастанию массивов в один,\n"); printf (" элементы массива вводите через пробел, завершение ввода массива: Enter \n"); printf ("\n Введите первый массив %i целых чисел -> ", sz); for (d = 0; d < sz; d++) a[d] = random(100); // как вариант: scanf ("%i", &a[d]); printf ("\n Введите второй массив %i целых чисел -> ", sz); for (l = 0; l < sz; l++) b[l] = random(100); // как вариант: scanf ("%i", &b[l]); direct_sort (a); // Вывод отсортированного первого массива printf ("\n Отсортированный первый массив -> "); for (d = 0; d < sz; d++) printf ("%i ", a[d]); direct_sort (b); // Вывод отсортированного второго массива printf ("\n Отсортированный второй массив -> "); for (l = 0; l < sz; l++) printf ("%i ", b[l]); mas_split (a, b, c); // Вывод результата слияния двух массивов printf("\n Массив-результат: \n"); for (n = 0; n <2*sz; n++) printf ("%i ", c[n]); } C C Практическое занятие : сортировка и слияние двух массивов (на языке С) используя функции выборочнымымой сортировки и слияния целочисленных массивов Головная программа: 8 МАССИВЫ. Сортировка Для работы функции randomize() надо подключать библиотеку time.h; функция random(x) находится в библиотеке stdlib.h ВМП