- •Задачи с решениями
- •1. Одномерные массивы
- •Input a(I)
- •Input a(I)
- •Input a(I)
- •Input a(I)
- •Input a(I)
- •Input a(I)
- •Input a(I)
- •Input a(I)
- •Input a(I)
- •Input a(I)
- •Input a(I)
- •Input b(I)
- •Input a(I)
- •Input b(I)
- •Input a(I)
- •Input a(I)
- •Input a(I)
- •2. Двумерные массивы
- •Input a(I, j)
- •Input a(I, j)
- •Input a(I, j)
- •Input a(I, j)
- •Input a(I, j)
- •Input a(I, j)
- •Input a(I, j)
- •Input a(I, j)
- •Input a(I, j)
- •Input a(I, j)
- •Input ; " ", a(I, j)
- •Input ; " ", a(I, j)
- •Input ; " ", a(I, j)
- •Input ; " ", a(I, j)
- •Input ; " ", a(I, j)
- •Input ; " ", a(I, j)
- •Input ; " ", a(I, j)
- •Input ; " ", a(I, j)
- •Input "vvedite slovo"; a
- •Input "vvedite predlogenie"; a
- •Input "vvedite predlogenie"; a
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