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

Input "vvedite slovo"; a

N = LEN(A): K = N \ 2

IF N MOD 2 = 0 THEN

B = ""

FOR I = 1 TO K

B = B + MID$(A, I, 1)

NEXT I

FOR I = 1 TO K \ 2

C = MID$(B, I, 1)

MID$(B, I, 1) = MID$(B, K - I + 1)

MID$(B, K - I + 1) = C

NEXT I

ELSE

B = LEFT$(A, K) + RIGHT$(A, N - (K + 1))

END IF

A = B

PRINT "A="; A

END

Задачи на предложения.

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

Первый основывается на том, что начало слова распознается по первому непробелу, а конец слова распознается по первому пробелу, стоящему после слова. Поэтому для распознавания последнего слова в предложении в конце предложения добавляется пробел. Рассмотрим этот алгоритм на примере. В данном примере NS – позиция начала слова, KS –количество символов в слове

Дано предложения, в котором не менее одного слова. Распечатать самое длинное слово, предполагая, что оно единственное.

DIM A AS STRING, I AS INTEGER, MAX AS INTEGER

DIM B AS STRING, NS AS INTEGER, KS AS INTEGER

Input "vvedite predlogenie"; a

I = 1: MAX = 0: A = A + " "

WHILE I <= LEN(A)

IF MID$(A, I, 1) <> " " THEN

NS = I: KS = 0

WHILE MID$(A, I, 1) <> " "

I = I + 1: KS = KS + 1

WEND

IF KS > MAX THEN

B = MID$(A, NS, KS)

MAX = KS

END IF

END IF

I = I + 1

WEND

PRINT "CAMOE DLIHHOE CLOVO "; B

END

END

Второй основывается на том, что начало слова распознается по пробелу, стоящему перед словом, а конец слова распознается по пробелу, стоящему после слова. Поэтому, для распознавания первого и последнего слов в предложении в начале и конце предложения добавляются пробелы. Рассмотрим этот алгоритм на примере. В данном примере: NS – позиция начала слова; KS –позиция конца слова; DS – длина слова; DIM B$(L \ 2) – описывается массив строк B$ с количеством элементов в массиве, равном максимально возможному количеству слов во введенном предложении «А» L \ 2 (если в каждом слове только по одному символу и слова отделяются друг от друга только одним пробелом).

Дано предложение, в котором не менее двух слов. Распечатать все слова, отличные от второго слова. Если таких слов нет, то выдать соответствующее сообщение.

DIM A AS STRING, I AS INTEGER, K AS INTEGER, F AS INTEGER

DIM NS AS INTEGER, KS AS INTEGER, DS AS INTEGER, N AS INTEGER

Input "vvedite predlogenie"; a

I = 1: A = " " + A + " ": N = LEN(A)

DIM B$(N \ 2)

K = 0: F = 0

WHILE I < LEN(A)

IF MID$(A, I, 1) = " " AND MID$(A, I + 1, 1) <> " " THEN

NS = I + 1

ELSEIF MID$(A, I, 1) <> " " AND MID$(A, I + 1, 1) = " " THEN

KS = I

DS = KS - NS + 1

K = K + 1: B$(K) = MID$(A, NS, DS)

END IF

I = I + 1

WEND

IF K >= 2 THEN

FOR I = 1 TO K

IF B$(I) <> B$(2) THEN PRINT B$(I): F = 1

NEXT I

END IF

IF F = 0 THEN PRINT "TAKIX SLOV HET ";

END