Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PRACT5.DOC
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
79.87 Кб
Скачать

3. Пример решения задачи

Условие задачи: даны два слова А и В , состоящие из n и m букв (n>m). Проверить, можно ли из букв, входящих в слово А, составить слово В. Каждую букву слова А использовать только один раз.

Метод и алгоритм решения задачи.

Введем обозначения: А и В - исходные слова; n и m - длины соответственно слов А и В.

Просматриваем слово В побуквенно слева направо. Если в слове В встречается буква слова А, тогда эту букву слова А заменяем на знак , не относящийся к буквам. Если в слове А такой буквы нет, то выдаем соответствующее сообщение. Для очередной буквы слова В осуществляем полный просмотр (в цикле) букв слова А. Алгоритм решения задач представлен на рис.1.

Текст программы на языке Паскаль следующий.

PROGRAM PR5;

LABEL 1;

VAR A,B:STRING[10];

I,J,M,N:INTEGER;

K,P:BOOLEAN;

BEGIN

WRITE ( ‘ВВЕДИТЕ СЛОВО А:’);

READLN ( A );

N:=LENGTH ( A );

Рис.1. Блок-схема алгоритма

Продолжение рис.1

1:

WRITE (‘ВВЕДИТЕ СЛОВО B:’);

READLN ( B ) ;

M:=LENGTH ( B );

IF M>N THEN BEGIN

WRITE (‘РАЗМЕР СЛОВА B НЕ ДОЛЖЕН ПРЕ- ВЫШАТЬ РАЗМЕР СЛОВА А’);

GOTO 1

END;

FOR I:=1 TO M DO

BEGIN

P:=FALSE;

J:=0;

REPEAT

INC (J);

IF J=N THEN K:=TRUE;

IF A[J]=B[I] THEN BEGIN

P:=TRUE;

A[J]:=‘ ’

END;

UNTIL P OR K;

IF P=FALSE THEN BREAK

END;

IF P THEN WRITELN(‘СЛОВO B СОСТАВИТЬ ИЗ А МОЖНО’)

ELSE WRITELN(‘СЛОВО B СОСТАВИТЬ ИЗ А НEЛЬЗЯ’)

END.

4. Задачи, выносимые на практические занятия

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

1. Дана строка символов C длиной n. Удалить из нее все пробелы, за исключением тех, которые лежат между апострофами.

2. Подсчитать количество слов в заданной строке символов. Разделителями является один или несколько пробелов.

3. Составить программу анализа строки символов и подсчитать в ней количество цифровых символов, пробелов и прочих символов.

4. Составить программу анализа строки из n символов, содержащей арифметическое выражение, на правильность записи открывающих и закрывающих скобок. Если выражение ошибочно, то печатается сообщение об ошибке.

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

6. Составить программу, хранящую телефонный справочник и обеспечивающую выдачу телефона по фамилии. Признаком окончания работы со справочником является символ ‘ ’.

7. Для встречающихся в заданном тексте пар рядом расположенных символов указать, сколько раз встречается каждое из таких двухбуквенных сочетаний.

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

9. В заданном предложении указать слово, в котором доля гласных (A, E, I, О) максимальна.

10. Отредактировать заданное предложение, заменяя многоточия точкой.

11. В заданном предложении найти самое короткое и самое длинное слова.

12. Из заданного текста предложения выбрать и напечатать только те символы, которые встречаются в нем только один раз (в том порядке, в котором они встречаются в тексте).

13. В заданном тексте удалить символ ‘,’ и подсчитать число удаленных символов.

14. Провести синтаксический анализ процедуры Rewrite [2, c.67]. В случае неправильно введенной строки выдать сообщение об ошибке.

15. Провести синтаксический анализ процедуры SetTextBuf [2, c.69]. В случае неправильно введенной строки выдать сообщение об ошибке.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]