- •Департамент образования и науки
- •1. Этапы решения задач на эвм. Алгоритмизация. Блок-схемы.
- •2. Назначение системы программирования.
- •3.Связь функция - клавиатура в интегрированной среде Turbo Pascal
- •4. Команды экранного редактора
- •4.1 Команды перемещения курсора
- •4.2 Команды вставки/удаления
- •4.3 Команды работы с блоками
- •5. Технология компиляции
- •6. Технология отладки программы
- •7. Программирование линейных алгоритмов
- •Задание 1
- •8. Программирование разветвляющихся вычислительных процессов
- •Задание 2
- •9. Программирование циклов с параметром
- •Задание 3
- •10. Программирование циклов с условием
- •Задание 4
- •11. Работа с векторами
- •Задание 5
- •12. Работа с матрицами
- •Задание 6
- •13. Обработка символьных строк
- •Задание 7
- •14. Записи. Файлы.
- •Задание 8
- •15. Процедуры
- •Задание 9
- •16. Функции
- •Задание 10
13. Обработка символьных строк
Строковые переменные аналогичны массивам типа char. Их отличием является то, что число символов (длина строковой переменной) может динамически меняться в интервале от единицы до заданного верхнего значения.
Перед выполнением данной лабораторной работы необходимо ознакомиться с правилами описания и использования переменных типа string, допустимыми операциями над ними, соответствующими стандартными процедурами и функциями.
Под множеством понимают некоторую неупорядоченную совокупность однородных объектов, объединенных под общим именем. Имена множеств образуются так же, как и имена простых переменных. Для описания множеств используется служебное слово set. Множество в Турбо-Паскале можно описывать двумя способами:
а) в разделе описания переменных VAR:
var
<имя переменной>: setof <базовый тип>;
б) определить сначала тип, а затем описать массив этим типом
type
<имя типа>: set of <базовый тип>;
var
<имя переменной>: <имя типа>;
где <базовый тип> - любой дискретный тип, содержащий не более 256 значений.
Задание 7
ЦЕЛЬ РАБОТЫ:
Овладеть навыками составления алгоритмов и программ на языке Паскаль по обработке символьных строк.
Научиться использовать встроенные функции для обработки строк.
ПРИМЕР 1:Удалить из строки все "лишние" (парные) пробелы.
А Л Г О Р И Т М
алгУдаление пробелов
аргS: лит
резS: лит
рабl: цел
нач
вводS
l:=вхождение (" ", S)
если l=0
товывод"удаления не было"
иначенцпокаl > 0
удалить (S, вхождение (" ",S), 1)
l:=вхождение (" ", S)
кц
выводS
все
кон
П Р О Г Р А М М А
begin
writeln ('Удаление парных пробелов.');
writeln ('Введите строку:' );
readln (s);
I:=pos (' ', s);
if l=0 then
writeln ('Удаления не было')
else
begin
while l >0 do {пока в строке есть парные пробелы}
begin
delete (s,pos (' ',s), 1);
I:=pos (' ',s)
end;
writeln ('Получена строка:');
writeln (s);
end;
end.
ПРИМЕР 2:Дана строка символов с точкой в конце строки. Определить число различных букв, входящих в данную строку.
А Л Г О Р И Т М
алгЧисло различных букв в строке
аргstr:лит;M:множ симв;
резn: цел;
рабI: цел;
нач
вводstr
нцдля iот 1доlength(str)
если not(str[i] in M)
то M:=M+[str[i]];
n:=n+1;
все
кц
выводn
кон
П Р О Г Р А М М А
program kol-vo simv v stroke;
var M: set of char;
str: string;
n,i: integer;
begin
M:=[];
N:=0;
writeln ('Введите строку');
readln (str);
for i:=1 to length(str) do
if not(str[i] in M) then
begin
M:=M+[str[i]];
n:=n+1;
end;
writeln('Количество различных элементов в строке=',n:3);
end.
ПОРЯДОК РАБОТЫ
1. Разработать алгоритм и программу примера 1 (табл.12).
Разработать и реализовать алгоритм с применением множеств.
2. Разработать алгоритм и программу примера 2 (табл.13).
Разработать и реализовать алгоритм с применением множеств.
СОДЕРЖАНИЕ ОТЧЕТА
Отчет должен содержать условия, алгоритмы, тексты программ, исходные данные и результаты по двум примерам.
ТАБЛИЦА 12
НОМЕР |
УСЛОВИЕ |
1 |
Проверить, является ли строка палиндромом (т.е. читается ли она одинаково справа налево и слева направо). Пробелы игнорируются. Например, шалаш, а роза упала на лапу азора. |
2 |
Проверить, верно ли что в строке чередуются гласные и согласные буквы. Пробелы игнорируются. |
3 |
Проверить, имеется ли в заданном тексте баланс открывающихся и закрывающихся скобок. |
4 |
В заданном предложении указать слово, в котором доля гласных а,е,и,о максимальна. |
5 |
В заданном предложении найти самое короткое и самое длинное слово. |
6 |
Для каждого символа заданного текста указать, сколько раз он встречается в тексте. Сообщение об одном символе должно печататься не более одного раза. |
7 |
В заданном тексте удалить символ "," и подсчитать число удаленных символов. |
8 |
В заданном тексте подсчитать количество гласных букв. |
9 |
В заданном тексте заменить каждый символ "а", стоящий на четном месте, на символ "о". |
10 |
Подсчитать количество слов в предложении. |
ТАБЛИЦА 13
НОМЕР ВАРИАНТА |
УСЛОВИЕ |
1 |
Дан массив из слов А(N). Найти все слова, заканчивающиеся гласной буквой. |
2 |
Дан массив из слов Х(m). Найти все слова четной длины. |
3 |
Дан массив из слов У(к). Найти все слова с нечетным количеством буквы "о". |
4 |
Дан массив из слов A(m). Найти все слова с длиной, не превышающей заданной. |
5 |
Дан массив из слов X(n). Найти все слова, содержащие хотя бы одно вхождение заданной подстроки. |
6 |
Дан массив из слов A(k). Найти все слова, начинающиеся и заканчивающиеся одной и той же буквой. |
7 |
Дан массив из слов A(k). Найти все слова с нечетным количеством буквы "о". |
8 |
Дан массив из слов У(L). Найти все слова, содержащие шипящие. |
9 |
Дан массив из слов A(n). Найти все слова, начинающиеся с заданной буквы. |
10 |
Дан массив из слов У(m). Найти все слова с четным количеством буквы "а". |