Основные теоретические сведения

Приступая к решению задач этого раздела, следует вспомнить, что:

- каждому символу соответствует число — код символа;

- Тип STRING (строка) в Паскале похож на одномерный массив символов ARRAY[0..N] OF CHAR, однако, в отличие от массива, количество символов в строке-переменной может меняться только от 0 до 255 . В Паскале разрешается не указывать длину строки N, в этом случае она принимается максимально возможной, а именно N=255 .

 

Над строками определены две операции:

1. Операция сцепления (+) применяется для сцепления нескольких строк в одну, например:

SumStr := 'Borland' + 'Pascal' + '7.0'

2. Операции отношения (=, <>, >, <, >=, <=) проводят сравнение двух строк слева направо до первого несовпадающего символа, и та строка считается больше, в которой первый несовпадающий символ имеет больший номер в стандартной таблице обмена информацией.

Например, выражение

' mS-DOS' < 'MS-Dos'

'123' < '2 '

'стол' < ' столик'

 

Если строки имеют различную длину, но в общей части символы совпадают, считается, что более короткая строка меньше, чем более длинная.

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

¾ 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 – код возникшей при преобразовании ошибки.

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

Задача 1. Дан текст. Найти в нем количество буквосочетаний 'st'.

Система тестов:

Значение переменной st Результаты
st ghhgst stjkj
sthghjghghghst

 

Решение задачи:

Program Kolichestvo_ST;

var

str : string;

counter, I : integer;

begin

repeat {Ввод непустой строки}

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

readln(Str)

until length(Str)<>0;

counter :=0;

for I:=1 to length(str)-1 do {или if str[i]+str[i+1]=’st’}

if (str[i]=’s’) and (str[i+1]=’t’) then

inc(counter);

writeln(' counter = ', counter);

readln;

end.

Задача 2. Дан текст из цифр и строчных латинских букв. Определить сколько гласных ( a , e , i , o , u, y) и сколько согласных букв в этом тексте.

Система тестов:

Значение переменной st Результаты
123 erty asd гласных – 3 согласных – 4
sdfdg3 43 3rtg 23 гласных – 0 согласных – 8

Решение задачи:

Program Glasnie_Soglasnie;

const

gl=[' I', 'o', 'u', 'a', 'e', 'y'];

Digit=[' ' , '0', '1', '2', '3', '4', '5', ' 6', '7', '8', '9'];

var

st: string;

gl_count, dig_count, i: integer;

begin

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

readln(st);

for I:=1 to length(st) do

begin

if st[i] in gl then

inc(gl_count);

if st[i] in digit then

inc(dig_count);

end;

writeln('glasn= ',gl_count');

writeln(‘soglasn= ', length(st)- gl_count - dig_count);

readln;

end.

 

Задача 3.Дан текст, В тексте заменить одно заданное слово на другое.

Система тестов:

Значение Text st1 st2 Результаты
I go to school. school shop I go to shop..

Решение задачи:

Program Change_St1_to_St2;

var

text, st1, st2: string;

p, i: integer;

begin

Writeln(' Введите текст');

readln(text);

Writeln(' Введите слово которое следует заменить');

readln(st1);

Writeln(' Введите слово на которое следует заменить');

readln(st2);

p:=Pos(st1,text);

while p > 0 do

begin

Delete(text,P,length(st1));

Insert(st2, text,P);

p:=Pos(st1,text);

end;

writeln(text);

readln;

end.

Задания для самостоятельного выполнения

1. Дан текст. Найти в нем удвоенные буквы.

2. Дан текст. Проверить соблюдается ли в записи данной математической формуле баланс открывающихся и закрывающихся скобок.

3. Дан текст. Напечатать текст в обратном порядке.

4. Дан текст. Найти в нем количество слов.

5. Дан текст. Найти количество слов, заканчивающихся буквосочетанием 'kk'.

6. Дан текст. Заменить все гласные на символ ' * '.

7. Дан текст. Найти количество слов 'krokodil'.

8. Дан текст. Утроить все символы в тексте.

9. Дан текст. Удалить все гласные в тексте.

10. Дан текст. Удалить в тексте лишние пробелы между словами, оставив по одному.

11. Написать программу, которая проверяет, является ли введенная с клавиатуры строка целым числом.

12. Найти самое длинное и самое короткое слово в заданном тексте.

13. Дан текст. Удалить каждую вторую букву.

14. Дан текст из стpочных латинских букв. Напечатать:

а) все буквы, входящие в текст не менее двух pаз;

б) все буквы, входящие в текст по одному pазу.

15. Дан текст. Вывести текст по две буквы в столбик.

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

17. Написать программу, которая преобразует введенное пользователем десятичное число в шестнадцатеричное.

18. Написать программу, которая проверяет, является ли введенная с клавиатуры строка дробным шестнадцатеричным числом и преобразует его в двоичное.

19. Дан текст. Из заданного предложения удалить все слова, которые уже встречались в нем ранее.

20. Удалить из слов с четной длиной все гласные, а из слов с нечетной длиной – все согласные.

21. Дана строка из слов, содержащих буквы и цифры. Слова разделены пробелами. Удалить из каждого слова цифры. Вывести полученные слова, упорядочив их по убыванию количества входивших в них цифр.


Лабораторная работа № 9. Функции и процедуры

Цель работы:Приобретение навыков в построении и использовании процедур и функций.

 

Задачи:

¾ понять, что такое процедура и способы ее задания;

¾ понять, что такое функция и способы ее задания

¾ определить, в каких случаях целесообразно использовать процедуры, а в каких - функции.

 

Порядок выполнения работы:

1. Перед выполнением работы, обязательно, прочитать конспект лекций по теме «Процедуры и функции».

2. Ознакомиться с представленными в лабораторной работе теоретическими сведениями.

3. Получить дополнительные теоретические знания из источников: [3: Глава 6], [4: Тема 8], [7: Занятие 11, 12], [10: Глава 8].

4. Реализовать на ЭВМ разобранные примеры.

5. Самостоятельно выполнить предложенные задачи.

 

Внимание: переходить к выполнению пунктов 4 и 5 только после тщательной проработки пунктов 1 – 3.