Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МЕтодичка по практическим работам.docx
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
156 Кб
Скачать
☆

Контрольные вопросы

  1. Описать переменную Y как переменную, принимающие только целочисленные значения в диапазоне от 20 до 35.

  2. Можно ли задать переменную ограниченного типа, принимающую ограниченные значения на отрезке [2.7, 5.7] ?

  3. Какие из приведенных ниже описаний массивов являются неправильными и почему ?

а) var A: array[1..20] of real;

б) type MAS=array[‘A’..’D’];

var A: MAS;

в) var A: array[integer] of char;

г) type SITY=(Taganrog, RostovDon, Moscow);

var A: array[SITY] of real;

var B: array[SITY,2] of boolean;

var B: array[SITY,1..4] of integer;

д) var A: array[1..5, 1..7] of real;

е) var A: array[10,10] of integer;

  1. Сколько элементов содержит каждый правильно описанный массив предыдущего пункта ?

  2. Могут ли элементы массива быть различных типов ?

  3. Как осуществляется доступ к элементам массива ?

Лабораторная работа 5. Обработка символьных строк

Основные сведения

Описание строковых переменных

Var список_имен_переменных:string[максимальная_длина_строки];

или

Var список_имен_переменных:string;

Максимальная длина строки не может быть больше 255.

Операции над данными типа STRING

  • операции отношения <, <=, >, >=, =, <> (сравнение лексикографическое);

  • конкатенация (сцепление) +;

  • доступ к символу строки: переменная[номер_символа_в_строке].

Стандартные функции для обработки строк

length(S:string):byte – возвращает текущую длину строки S,

concat(S1,S2,..SN:string):string – возвращает сцепление строк S1...SN.

copy(S:string; START, LEN:integer):string – возвращает подстроку S длиной LEN, начинающуюся с позиции START.

delete(var S:string; START,LEN:integer) удаляет в S подстроку длиной LEN, начинающуюся с позиции START.

insert(var S:string; SUBS:string; START:integer) вставляет в S подстроку SUBS, начиная с позиции START.

pos(SUBS,S:string):byte ищет первое вхождение подстроки SUBS в строку S и возвращает номер символа S, с которого это вхождение начинается. Нуль, если нет ни одного вхождения.

str(X; var S:string) преобразует число X в строку S.

val(S:string; var X; var E:integer) преобразует строку цифр S в значение числовой переменной X, E – код возникшей при преобразовании ошибки.

Пример выполнения

Дана строка символов, содержащая русские слова, разделенные пробелами. Найти слово, в котором больше всего различных гласных, и слово, в котором меньше всего различных согласных.

program PRIMER;

var S,SGL,SSG,S1,S2:string;

F:boolean;

I,J,K,MAXGL,MINSG:integer;

begin

repeat {Ввод строки}

writeln('Введите строку');

readln(S)

until length(S)<>0;

S1:=''; {Слово с макс. кол-вом гласных }

S2:=''; {Слово с мин. кол-вом согласных }

MAXGL:=0; {Максимальное количество гласных }

MINSG:=LENGTH(S); {Минимальное количество согласных}

J:=1; {Пропуск начальных пробелов }

while S[J]=' ' do

J:=J+1;

for I:=J to length(S) do {Найти первый пробел между словами}

if S[I]=' ' then break;

repeat

SGL:=''; Строка неповторяющихся гласных

SSG:=''; Строка неповторяющихся согласных

for K:=J to I-1 do

case S[K] of

'А','а','Е','е','И','и','О','о','У','у',

'Ы','ы','Э','э','Ю','ю','Я','я':

if pos(S[K],SGL)=0 then SGL:=SGL+S[K]; {Добавление новой гласной}

'Б','б','В','в','Г','г','Д','д','Ж','ж','З','з',

'К','к','Л','л','М','м','Н','н','П','п','Р','р',

'С','с','Т','т','Ф','ф','Х','х','Ц','ц','Ч','ч',

'Ш','ш','Щ','щ','Ъ','ъ','Ь','ь':

if pos(S[K],SSG)=0 then SSG:=SSG+S[K];{Добавление новой согласной}

end; { case S[K] of }

if length(SGL)>MAXGL then begin

{Обновить S1}

S1:=copy(S,J,I-J);

MAXGL:=length(SGL)

end;

if length(SSG)<MINSG then begin

{Обновить S2}

S2:=copy(S,J,I-J);

MINSG:=length(SSG)

end;

J:=I;

while S[J]=' ' do J:=J+1; {Пропуск нескольких пробелов между словами }

while S[I]=' ' do I:=I+1; {Поиск следующего пробела-разделителя}

for I:=I+1 to length(S) do if S[I]=' ' then break;

until J=I;

writeln('Исходная строка');

writeln(S);

writeln('Слово с макс.количеством неповторяющихся гласных :',S1);

writeln('Слово с мин.количеством неповторяющихся согласных:',S2)

end.