Пример 1. Составить программу, которая выведет на экран числа от 1 до 9 в случайном порядке.
Алгоритм: Будем использовать множество для хранения тех чисел, которые уже выведены на экран. Сначала это множество пустое. Затем девять раз должны повторяться следующие действия: выбор случайного числа (функция Random) осуществляется до тех пор, пока не будет выбрано число, которого нет в множестве; после чего это число выводится на экран и включается в множество.
Программа:
Program S1;
Uses Crt;
Type Numbers = 1..9; { тип-диапазон }
SetNumbers = Set Of Numbers; { тип–множество чисел (от 0 до 9) }
Var Sn: SetNumbers;
I, N: Numbers;
Begin
Clrscr;
Randomize; { инициализируем датчик случайных чисел }
Sn:= [ ]; { множество выбранных чисел – сначала пустое }
For I:= 1 To 9 Do { девять раз повторяем следующие действия: }
Begin
Repeat { повторяем формирование }
N:= random(9) + 1 { целого числа из интервала от 1 до 9}
Until not (N in Sn); {пока не получим число, которого нет в множестве Sn }
Writeln (N); { выводим полученное число на экран }
Include(Sn, N) { включаем это число в множество Sn }
End;
Readln
|
|
End.
Контрольные задания
8.1. Составить программу, которая вводит с клавиатуры N чисел и помещает четные из введенных в множество А, а нечетные – в множество В. Элементы полученных множеств распечатать.
8.2. Составить программу, которая вводит предложение и формирует три множества: множество гласных, множество согласных, множество разделителей. Элементы полученных множеств вывести на экран.
8.3. Составить программу, которая вводит с клавиатуры N целых чисел и формирует 5 множеств: одно-, дву-, трех-, четырех- и пятизначных чисел. Элементы полученных множеств вывести на экран.
8.4. Составить программу-тренажер по проверке знания таблицы умножения на заданное число N (оно должно вводиться с клавиатуры). Программа должна вразброс выводить 10 примеров вида «K * N =» (К изменяется от 1 до 10), причем так, чтобы примеры не повторялись. Пользователь вводит ответ, после чего программа должна выводить сообщение «Верно» или «Неверно».
8.5. «Решето Эратосфена». Алгоритм с таким названием позволяет выделить простые числа из интервала от 2 до N. Он состоит в следующем: создаем исходное множество чисел от 2 до N. Множество простых чисел на начальном этапе пусто. Берем первое число – это 2. Оно является простым числом, включаем это число в множество простых чисел. Удаляем из исходного множества чисел все числа, кратные 2 (т.е. 2, 4, 6 и т.д.). Вновь берем первое число из исходного множества чисел. Это 3 – простое число. Включаем его в множество простых чисел, а из исходного множества исключаем все числа, кратные 3. Снова берем первое число из исходного множества (это число 5 - простое). Включаем его в множество простых, а из исходного исключаем все числа, кратные числу 5. Эти действия повторяем до тех пор, пока исходное множество чисел не станет пустым.