Логические операции над множествами
Определение. Множества считаются равными, если все элементы, содержащиеся в одном множестве присутствуют в другом, и наоборот.
Определение. Одно множество считается входящим в другое, если все элементы содержатся во втором, при этом обратное в общем случае может быть несправедливо. Логические операции проверки вхождения одного множества в другое записываются через операции больше или равно: If then If then If S1 =S2 then writeln ('S2 входит в S1');
in Логическая операция проверки принадлежности элемента множеству записывается через оператор in. Например: Const Const AllowSymbol : set of char = ['Y', 'y', 'N', 'n'];Var Reply:char; …… Ifin If Reply in AllowSymbol then WriteLn(Правильно!); ……
repeat. Описать множество М(1..50). Сделать его пустым. Вводя целые числа с клавиатуры, заполнить множество 10 элементами. Для ввода элементов использовать цикл repeat. Примечание: Множественный тип данных не может быть использован для определения функции.
Поиск простых чисел с помощью решета Эратосфена в числовом промежутке [1..N]. Идея метода "решета Эратосфена" заключается в следующем: Сформируем множество М, в которое поместим все числа заданного промежутка. Затем последовательно будем удалять из него элементы, кратные 2, 3, 4, и так далее до целой части числа [N/2], кроме самих этих чисел. После такого "просеивания" в множестве М останутся только простые числа.
Program Var set of Begin For to do For toNdo If Then Fortodo IfinThen End Program Resheto; Var M : set of byte; i, k, N : integer; Begin Writeln('Введите размер промежутка (до 255) '); Readln(N); M := [2..N]; For k := 2 to N div 2 do For i := 2 to N do If (i mod k=0) and (i<>k) Then M := M-[i] For i := 1 to N do If i in M Then Write(i:3); Readln; End.
МУХА СЛОН + Каждая буква - это цифра, разным буквам соответствуют разные цифры. Необходимо заменить буквы цифрами так, чтобы получилось верное равенство. Найти все решения. Используем множество S1 для хранения цифр слова МУХА, S2 – для хранения цифр слова СЛОН. Цифры не должны совпадать, пересечение множеств – нулевое. Если это так, то решение правильное. Иначе идет возврат - удаляем из множества S1 последнюю внесенную цифру и пытаемся выбрать еще одно значение. Заметим, что значение буквы М в слове МУХА может иметь значения от 1 до 4, а буква А в этом же слове не может быть равна 0.
Program Type Var Program Rebus; Type MN = set of 0..9; Var m, u, h, a : 0..9; n1, n2 : Integer; s, l, o, n : 0..9; S1, S2 : MN; Procedure Procedure Print(x, y : Integer); Begin writeln(x:5); writeln('+'); writeln(x:5); writeln(' '); writeln(y:5); End; Begin Begin S1 := [ ]; S2 := [ ];
Fortodo Begin Fortodo If in then Begin Fortodo If in then Begin For todo If in then For m := 1 to 4 do Begin S1 := S1+[m]; For u := 0 to 9 do If Not(u in S1) then Begin S1 := S1+[u]; For h := 0 to 9 do If Not (h in S1) then Begin S1 := S1+[h]; For a := 1 to 9 do If Not (a in S1) then
Begin div divmod n2mod mod If then Begin S1 := S1+[a]; n1 := 1000*m+100*u+10*h+a; n2 := 2*n1; s := n2 div 1000; l :=n2 div 100 mod 10; o := n2 div 10 mod 10; n := n2 mod 10; S2 := [s, l, o, n]; If (S1*S2=[ ]) and ([s]*[l]*[o]*[n]=[ ]) then Print (n1, n2); S1 := S1-[a]; End;
end end end End S1 := S1-[h]; end; S1 := S1-[u]; end; S1 := S1-[m]; end; Readln; End.
Решите самостоятельно следующие ребусы: П Ч Ё Л К А x 7 = ЖЖЖЖЖЖ ТОРГ x Г = ГРОТ ЛАДЬЯ+ЛАДЬЯ = ФЕРЗЬ
Написать программу, где пользователю требуется вводить с клавиатуры числа. Если пользователь вводит недопустимый символ, должен раздаваться звуковой сигнал. Неправильный символ печататься не должен. Выход из программы – на клавишу Esc.