Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции+Pascal.doc
Скачиваний:
31
Добавлен:
02.12.2018
Размер:
647.17 Кб
Скачать

7.2 Примеры решения задач

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.

  1. Дано натуральное число 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.

Группы

1

2

3

4

0,1,2,3,4,5,6,7

0,1,2,3,8,9,10,11

0,1,4,5,8,9,12,13

0,2,4,6,8,10,12,14

1 способ

Type S=set of 0..15;

A=array[1..4] of S;

Const

X: A=([0..7],[0..3,8..11],[0,1,4,5,8,9,12,13],[0,2,4, 6,8,10,12,14]);

Var

R:S {Множество типа S}

K,I: Byte;

B: array[1..4] of Byte;

BEGIN

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 байт. Дополнительный байт расположен в самом начале строки ( имеет нулевой номер) и содержит значение текущей длины строки.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]