Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практикум ОА и П.doc
Скачиваний:
23
Добавлен:
29.08.2019
Размер:
13.34 Mб
Скачать

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

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

Лабораторная работа №10. Тема: «Разработка алгоритмов и программ обработки строк. Использование множеств для решения задач».

Цель работы: получение навыков составления программ на языке Pascal для задач по обработке информации, представленной в виде строк и символов;

программ получение навыков разработки и составления программ с использованием множеств.

Программные средства: система программирования Borland Pascal.

Вопросы для самоподготовки:

  1. Понятие строки. Описание строки.

  2. Операции со строками.

  3. Стандартные процедуры и функции при работе со строками.

ЗАДАНИЕ 1

Подсчитайте количество букв “a” в заданной строковой переменной.

Решение:

Program Kol;

Var

b: string;

i, k: integer;

begin

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

readln (b);

k:=0;

for i:=1 to length (k) do

if b[i]=’a’

then k:=k+1;

writeln (k);

readln

end.

ЗАДАНИЕ 2

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

Решение:

Program vkey;

Var

st: string [40]; {строка}

n: integer; {номер проверяемого символа}

begin

writeln (‘Введите число и нажмите <Enter>’);

writeln (‘’);

readln (st);

n:=1;

while (n<=Length (st)) and ((st[n]>=’0’) and (st[n]<=’9’)) do

n:=n+1;

write (‘Введенная строка’);

if n<Length (st)

then

write (‘не’);

writeln (‘является целым числом’);

readln

end.

ЗАДАНИЕ 3

Напишите программу, которая в введенной с клавиатуре строке преобразует строчные буквы русского алфавита в прописные (учтите, что функция Up Case с символами русского алфавита не работает).

Решение:

Program simvol;

Var

st: string[80];

len: integer;

i: integer;

begin

writeln (‘Введите строку текста и нажмите <Enter>’);

readln (st);

len:=Length (st);

for i:=1 to len do

case st[i] of

a’..’n’: st[i]:=chr (ord (st[i])-32);

p’..’я’: st[i]:=chr (ord (st[i])-80)

end;

writeln (‘Строка преобразована к верному регистру:’);

writeln (st);

readln

end.

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

1. Составить программу для определения, имеется ли в данном слове, часть равная заданному слову.

2. Дано слово. Получить слово, являющееся записью данного слова справа налево.

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

ЗАДАНИЕ 4

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

Решение:

Program counter;

Var

c: char;

k: integer;

begin

k:=0;

writetln (‘Введите символьную строку’);

repeat

readln (c);

if not (c in [‘,’, ‘.’, ‘:’, ‘,’, ‘;’, ‘+’, ‘-‘, ‘!’, ‘?’, ‘*’, ‘/’])

then

begin

if c in [‘0’..’9’]

then k:=k+1

write (c)

end;

until Eoln;

writeln;

writeln (‘Число цифр в строке’, k:2);

readln

end.

ЗАДАНИЕ 5

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

Решение:

Program ZP;

Var

c, i, j: char;

znaki: set of ‘a’ .. ‘z’;

prepinaki: set of ‘!’ .. ‘?’;

begin

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

znaki:=[];

prepinaki:=[];

repeat

read (c);

if c in [‘a’ .. ‘z’]

then znaki:=znaki+[c]

else if c in [‘:’, ‘;’, ‘,’, ‘.’, ‘!’, ‘?’]

then pripenaki:=pripenaki+[c];

until Edn;

writeln (‘Латинские буквы:’);

for i:=’a’ to ‘z’ do

if i in znaki

then write (i:2);

writeln;

write (‘Знаки препинания’);

for j:=’!’ to ‘?’ do

if j in prepinaki

then write (j:2);

readln

end.