Основные теоретические сведения. Приступая к решению задач этого раздела, следует вспомнить, что:
Приступая к решению задач этого раздела, следует вспомнить, что:
- каждому символу соответствует число — код символа;
- Тип 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.