Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК_ОАиП.doc
Скачиваний:
18
Добавлен:
01.04.2025
Размер:
5.06 Mб
Скачать

Лабораторная работа №22.

Тема: Использование подпрограмм для решения задач на строковые переменные.

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

Program codes;

{Задача. Определите и выведите на экран коды русских прописных букв и латинских заглавных.}

Uses Crt;

Procedure Poccu9I;

Var i:char;

Begin

for i:='а' to 'п' do

Write(i,' - ',Ord(i),' | ');

for i:='р' to 'я' do

Write(i,' - ',Ord(i),' | ');

End;

Procedure Burzhui;

Var i:char;

Begin

for i:='A' to 'Z' do

begin

if (i='I') or (i='R')

then

begin

Write(i,' - ',Ord(i),' |');

Inc(i);

end;

Write(i,' - ',Ord(i),' | ');

end;

End;

Begin Clrscr;

Poccu9I;

Writeln; Writeln;

Burzhui;

Readln;

End.

Program dve_stroki;

{Задача. Запросите у пользователя две строки и сравните их длину, первый и последний символ каждой строки, а также выведите на экран эти строки с заглавной буквы.}

Uses Crt;

Var

s,t:string;

Procedure enter(var s,t:string);

Begin

Writeln('Введите первую строку: ');

Readln(s);

Writeln('Введите вторую строку: ');

Readln(t);

End;

Procedure dlina(s,t:string);

Begin

if length(s)=length(t)

then

Writeln('Длины строк равны.');

if length(s)>length(t)

then

Writeln('Первая строка длиннее второй.');

if length(t)>length(s)

then

Writeln('Вторая строка длиннее первой.');

End;

Procedure lastsim(s,t:string);

Begin

Writeln('Последний символ первой строки: ',s[length(s)]);

Writeln('Последний символ второй строки: ',t[length(t)]);

if s[length(s)]>t[length(t)]

then

Writeln(s[length(s)],' > ',t[length(t)]);

if s[length(s)]<t[length(t)]

then

Writeln(s[length(s)],' < ',t[length(t)]);

if s[length(s)]=t[length(t)]

then

Writeln(s[length(s)],' = ',t[length(t)]);

End;

Procedure zaglav(var s,t:string);

Begin

case s[1] of

'а'..'п':s[1]:=Chr(Ord(s[1])-32);

'р'..'я':s[1]:=Chr(Ord(s[1])-80);

'a'..'z':s[1]:=Chr(Ord(s[1])-32);

end;

Writeln(s);

case t[1] of

'а'..'п':t[1]:=Chr(Ord(t[1])-32);

'р'..'я':t[1]:=Chr(Ord(t[1])-80);

'a'..'z':t[1]:=Chr(Ord(t[1])-32);

end;

Writeln(t);

End;

Begin Clrscr;

enter(s,t);

dlina(s,t);

lastsim(s,t);

zaglav(s,t);

Readln;

End.

Program zadan_letter;

{Задача. Дан текст. Посчитать количество слов, заканчивающихся на заданную букву и перенести их в другую строку, написав через запятую. Вывести полученную строку на экран.}

Uses

Crt;

Var

text,stroka,s:string;

a:char;

Procedure enter(var text:string; var a:char);

Begin

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

Readln(text);

Write('Введите букву: ');

Readln(a);

End;

Procedure quant(var stroka:string; text:string; a:char);

Var

i,k:integer;

s:string;

Begin

stroka:='';

k:=0;

i:=1;

s:='';

for i:=1 to length(text) do

begin s:=s+text[i];

if ((text[i+1]=',') or (text[i+1]=' ') or (text[i+1]='.') or (i=length(text))) and (text[i]=a)

then

begin

Inc(k);

stroka:=stroka+s+', ';

s:='';

end;

if (text[i]=' ') or (text[i]='.')

then

s:='';

end;

Writeln('Количество нужных слов: ',k);

if k>0

then

Writeln('Это слова:');

stroka[length(stroka)]:=' ';

stroka[length(stroka)-1]:=' ';

Writeln(stroka);

End;

Begin Clrscr;

enter(text,a);

quant(stroka,text,a);

Readln;

End.

Задачи для самостоятельного решения

1. Составьте алгоритм приписывания к каждому слову в начало заданной буквы в данной строке. Выведите полученную строку на экран. Используйте подпрограммы для решения каждой частной задачи.

2. Составьте алгоритм замены в какой-нибудь литерной величине всех букв "а" на буквы "б" и наоборот (при такой замене, например, из слова "баба" должно получиться слово "абаб"). Выведите полученную строку на экран. Используйте подпрограммы для решения каждой частной задачи.

3. Составьте алгоритм, утраивающий каждую букву в заданном тексте (при этом, например, из слова "кот" должно получиться слово "кккоооттт"). Выведите полученную строку на экран. Используйте подпрограммы для решения каждой частной задачи.

4. Составьте алгоритм, выясняющий, является ли данное слово "перевертышем" (так называются слова, читающиеся одинаково слева направо и справа налево, например: ПОТОП, КАЗАК). Используйте подпрограммы для решения каждой частной задачи.

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

6. Составьте алгоритм, который каждую встреченную в слове букву "б" заменял бы сочетанием букв "ку". Если такого символа нет, то выведите соответствующее сообщение. Выведите полученную строку на экран. Используйте подпрограммы для решения каждой частной задачи.

7. Как только в строке встретится символ "*", удалить все символы в строке после "*". Выведите полученную строку на экран. Если такого символа нет, то выведите соответствующее сообщение. Используйте подпрограммы для решения каждой частной задачи.

8. Вставить в строку слово по условию:

а) в конец строки

б) в начало строки

в) после первого слова.

Выведите полученную строку на экран. Используйте подпрограммы для решения каждой частной задачи.

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

10. Все слова, в которых буква “а” встречается более 2х раз, удалить из текста. Выведите полученную строку на экран. Если такого символа нет, то выведите соответствующее сообщение. Используйте подпрограммы для решения каждой частной задачи.

11. Из строки удалить среднюю букву, если длина строки нечетная, иначе - удалить две средние буквы. Выведите полученную строку на экран. Используйте подпрограммы для решения каждой частной задачи.