Тема 4. Обработка данных строкового типа 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Тема 4. Обработка данных строкового типа



Примеры решаемых задач

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

Программа:

Program S1;

Uses Crt;

Var P: String [80]; { предложение }

B: Char;     { буква }

K, N, M: Integer; 

Begin

Clrscr;

Write (‘Введите предложение ’);

Readln (P); { ввели предложение }

Write (‘Введите букву ’);

Readln (B); { ввели букву }

M:=0;     { обнулили счетчик заданных букв }

N:= Length (P); { определили длину предложения }

For K:= 1 To N Do { перебираем все символы предложения

от первого до последнего }

If P[K]=B { если К-ый символ строки Р равен заданной букве}

Then M:= M+1; { увеличиваем счетчик букв }

Writeln (‘Буква  ’, B, ‘ встречается в предложении ’, M, ‘ раз’);

                       { вывели результат на экран }

Readln

End.

Пример 2. Составить программу, которая заменит во введенной строке один заданный символ на другой.

Программа:

Program S2;

Uses Crt;

Var P: String [80];  { строка}

B1, B2: Char; { буквы }

K, N, M: Integer; 

Begin

Clrscr;

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

Readln (P); { ввели исходную строку }

Write (‘Введите символ, который надо заменить ’);

Readln (B1); { ввели первый символ }

Write (‘На что заменять? ’);

Readln (B2); { ввели второй символ }

N:= Length (P); { определили длину предложения }

For K:= 1 To N Do  { перебираем все символы предложения

от первого до последнего }

If P[K]=B1     { если К-ый символ строки Р равен первому символу }

Then P[K]:= B2;       { записываем на К-е место в строку Р второй символ }

Writeln (‘Получилась строка: ’, P); { вывели результат на экран }

Readln

End.

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

Модель: количество слогов в слове равно количеству гласных букв в нем. Следовательно, нужно вычислить количество гласных букв во введенной строке.

Программа:

Program S3;

Uses Crt;

Const Glas = ‘АЕЁИОУЫЭЮЯаеёиоуыэюя’; { константа содержит все

гласные буквы }

Var W: String [20]; { слово }

K, N, M: Integer; 

Begin

Clrscr;

Write (‘Введите слово ’);

Readln (W);     { ввели слово }

N:= Length (W); { определили длину слова }

M:= 0;           { обнулили счетчик слогов }

For K:= 1 To N Do  { перебираем все буквы слова от первого

до последнего }

If Pos (W[K], Glas) > 0 { если К-ая буква слова W – гласная

(т.е.содержится в константе Glas) }

Then M:= M+1;    { увеличиваем счетчик слогов }

Writeln (‘В слове ’, M, ‘ слогов’); { вывели результат на экран }

Readln

End.

Пример 4. Составить программу, которая удаляет все пробелы из введенной строки.

Программа:

Program S4;

Uses Crt;

Var S: String [80]; { исходная строка }

K: Integer; 

Begin

Clrscr;

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

Readln (S); { ввели строку }

While Pos(‘  ‘, S)>0 Do     { пока в строке S есть пробелы }

Begin

K:= Pos (‘  ‘, S); { определили позицию первого пробела

в строке S }

Delete (S, K, 1) { удалили пробел из строки S }

End;

Writeln (‘Получилась строка ’, S); { вывели результат на экран }

Readln

End.

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

Модель: Разделитель – пробел либо знак препинания. Условие начала слова: на i-м месте находится разделитель, на i+1 – буква (т.е. не разделитель). Условие конца слова: на i-м месте находится не разделитель (т.е. буква), на i+1 – разделитель. Исключение могут составлять первое и последнее слова предложения. Применим искусственный прием: допишем в начало и конец введенного предложения по одному пробелу (пробел – это один из разделителей).

Алгоритм: Будем рассматривать символы парами, запоминать позицию в которой слово началось. Если слово закончилось, необходимо увеличить счетчик слов, выделить слово из предложения и вывести его на экран.

Программа:

Program S5;

Uses Crt;

Const R = ‘.,!?-():;’; { записали в константу все разделители }

Var S, W: String;  { S – предложение, W – очередное слово }

N, K, L, A, B: Integer;

Begin

ClrScr;

Write (‘Введите предложение ’);

Readln (S); { ввели предложение }

S:= ‘  ‘+S+’  ‘; { дописали пробелы в начало и конец предложения }

N:= 0;     { обнулили счетчик слов }

For K:= 1 To Length (S) - 1 Do { перебираем все символы предложения от первого до предпоследнего }

Begin

A:= Pos(S[K], R);         { входит ли K-й символ в разделители}

B:= Pos(S[K+1], R); {входит ли K+1-й символ в разделители}

If (A>0) And (B=0)    { если слово началось }

Then L:= K +1; { запоминаем позицию начала слова }

If (A=0) And (B>0)    { если слово закончилось }

Then Begin

N:= N+1; { считаем его }

W:= Copy (S, L, K-L+1); { выделяем слово }

Writeln (W)    { выводим слово на экран }

End

End;

Writeln (‘В предложении ’, N, ‘ слов ’); { выводим количество слов}

Readln

End.

 

 


Темы 5 - 8. Система типов языка Pascal. Перечисляемый тип,
тип-диапазон, множественный тип

Примеры решаемых задач

Пример 1. Составить программу, которая выведет на экран числа от 1 до 9 в случайном порядке.

Алгоритм: Будем использовать множество для хранения тех чисел, которые уже выведены на экран. Сначала это множество пустое. Затем девять раз должны повторяться следующие действия: выбор случайного числа (функция Random) осуществляется до тех пор, пока не будет выбрано число, которого нет в множестве; после чего это число выводится на экран и включается в множество.

Программа:

Program S1;

Uses Crt;

Type     Numbers = 1..9; { тип-диапазон }

    SetNumbers = Set Of Numbers; { тип–множество чисел (от 0 до 9) }

Var Sn: SetNumbers;

    I, N: Numbers;

Begin

Clrscr;

Randomize; { инициализируем датчик случайных чисел }

Sn:= [ ];              { множество выбранных чисел – сначала пустое }

For I:= 1 To 9 Do { девять раз повторяем следующие действия: }

Begin

Repeat                        { повторяем формирование }

N:= random(9) + 1 { целого числа из интервала от 1 до 9}

Until not N in Sn;           {пока не получим число, которого нет в множестве Sn }

Writeln (N);     { выводим полученное число на экран }

Include(Sn, N)   { включаем это число в множество Sn }

End;

Readln

End.



Поделиться:


Последнее изменение этой страницы: 2021-04-05; просмотров: 63; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.223.106.100 (0.011 с.)