1. Создать множество из элементов типа Char, выход из фазы создания осуществить при вводе значения Z. Распечатать все элементы созданного множества в алфавитном порядке.
Var
S: Set of Char;
N: Char;
Begin
S:=[]; {пустое множество}
WriteLn(‘Введите элементы множества’);
Readln(N); {считывание первого элемента}
While True Do Begin
S:=S+[N]; {внесение значения элемента в множество}
ReadLn(N);
If N = ‘Z’ Then Exit
End;
{Вывод элементов множества в алфавитном порядке}
For N:=’A’ to ‘Z’ Do
If N in S Then WriteLn(N);
END.
3. Дано натуральное число n. Составить программу вывода цифр, не входящих в десятичную запись числа n (в порядке возрастания).
Type Mn=Set Of 0..9;
Var S : Mn;
N: LongInt;
I : Integer;
Begin
WriteLn(‘Ведите число’);
ReadLn(N);
S:=[0..9];
While N<>0 Do Begin
S:=S-[n mod 10]; {Исключаем цифру}
N:=N Div 10;
End;
For I:=0 To 9 Do
If I In S Then Write (I:2);
WriteLn;
End.
3. Смоделировать игру с машиной. Задумайте целое число от 0 до 15. в ЭВМ вводятся номера групп, в которых находится задуманное число. Например, я задумала число 5. в ЭВМ вводится 1, 3. компьютер выводит число 5.
R:=[0..15]; {R- множество, в которое входит задуманное число}
For I:==1 To 4 Do Begin
Write(‘Введите 0, если не принадлежит ’, I,’ –ой группе, и 1, если принадлежит:’);
ReadLn(B[I]);
End;
For I;=1 To 4 Do
If B[I]=1 Then R:=R*X[I];
For I;=1 To 4 Do
If B[I]<>1 Then R:=R-X[I];
I:=0;
While I<=15 Do Begin
If I in R Then Begin WriteLn(‘Ваше число=’;I); Halt End;
I=I+1;
End;
END.
2 способ (с переводом в 2 с/c)
Var
A,I: Integer;
X: array[1..4] of Integer;
Y,Y1: Integer
BEGIN
For I;=1 To 4 Do
X[I]:=0;
For I;=1 To 4 Do Begin
WriteLn(‘Ведите номер группы’);
ReadLn(A);
X[A]:=1;
End;
Y1:=X[4]+2*(X[3}+2*(X[2]+2*X[1]));
Y:=15-Y1;
WriteLn(‘Ваше число= ’,Y);
END.
Примеры для самостоятельного решения:
1. Найти общие цифры в записи m чисел.
2. Найти простые цифры в интервале от 2 до n.
3. Вывести в алфавитном порядке элементы множества, составленного из произвольных букв от ‘A’…’Z’
8. Строки
Строка – последовательность символов. При использовании в выражениях строка заключается в апострофы. Количество символов в строке может изменяться от 0 до 255.
Определение строкового типа устанавливает максимальное количество символов, которое может содержать строка.
TYPE
<имя типа>=String[максимальная длина строки];
VAR
<идентификатор,…>:<имя типа>;
Переменную String можно задать и без описания типа.
VAR
<идентификатор,…>:string[максимальная длина строки];
Пример
CONST
Adres=’ул. Фестивальная 4’;
TYPE
Flot=String[125];
VAR
Fstr: Flot;
St1: String[34];
St2, St3: string[50];
Nazv: String[325]; {ошибка, длина>255}
Nay: String; {ошибка, не указана длина}
Для определения объема памяти в байтах, требуемой для размещения строки, к значению ее максимальной длины прибавляется 1. например, для размещения в памяти переменных Fstr, St1, St2, St3 требуется соответственно 126, 35, 51, 51 байт. Дополнительный байт расположен в самом начале строки ( имеет нулевой номер) и содержит значение текущей длины строки.
Выражения, в которых операндами служат строковые данные, называются строковыми выражениями.
Над строковыми данными допустимы операции сцепления и операции отношения.
Операции сцепления (+) применяются для сцепления нескольких строк в одну результирующую строку.
Выражение
Результат
‘Группа ’+’2В’
‘Группа 2В’
‘А’+’Б’+’В’
‘АБВ’
Длина результирующей строки не должна превышать 255.
Операции отношения (=,<>,>,<,>=,<=) проводят сравнение двух строковых операндов и имеют более низкий приоритет, чем операция сцепления. Сравнение строк производится слева направо до первого несовпадающего символа, и та строка считается больше, в которой первый несовпадающий символ имеет больший номер в стандартной таблице обмена информацией.
Результат выполнения операций отношения имеет булевский тип (True, False)
Выражение
Результат
‘COSM1’>’COSM2’
True
‘akkord’>’AKKORD’
True
Если строки имеют различную длину, то считается, что более короткая строка меньше, чем более длинная.
Выражение
Результат
‘Принтер ’>’Принтер’
True
‘Река’=’Река’
True
Для присваивания строковой переменной результата строкового выражения используется оператор присваивания. Например:
Str1:=’Группа учащихся’;
Если значение переменной после выполнения оператора присваивания превышает по длине максимально допустимую при описании, все лишние символы справа отбрасываются.
Описание А
Выражение
Значение А
A: String[6];
A:=’Группа 2В’
‘Группа’
A: String[8];
A:=’Группа 2В’
‘Группа 2В’
Допускается смешение в одном выражении операндов строкового и литерного типа. Если при этом литерной переменной присваивается значение строкового типа, длина должна быть равна единице, иначе будет ошибка.
Пример:
VAR
Lit: Char;
St1: String[12];
St2: String[30];
Begin
Lit:=’Z’;
Str1:=’Отдел’;
Str2:=Str1+Lit;
….
К отдельным символам строки можно обратиться по номеру (индексу) данного символа в строке. Индекс записывается в квадратные скобки []. Например: