Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка Паскаль.doc
Скачиваний:
127
Добавлен:
30.04.2015
Размер:
661.5 Кб
Скачать

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

Пример 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.