Опубликовано: 2018-06-07 08:00:00
Решение некоторых задач на строки
Задача №1. Составьте программу, заменяющую все восклицательные знаки («!») в тексте на точки («.»).
Решение:
- INPUT "VVEDITE TEKST: "; B$
- FOR I = 1 TO LEN(B$)
- IF MID$(B$, I, 1) = "!" THEN MID$(B$, I, 1) = "."
- NEXT
- PRINT "PREOBRAZOVANNYY TEKST: "; B$
Рисунок 1 – Решение первой задачи

Рисунок 2 – Результат выполнения первой задачи
Все просто. Посимвольно проходим всю введённую строку, выделяя в тексте символ с номером I. Если этот символ – восклицательный знак, то выделенный символ заменяем на запятую.
Задача №2. Составьте программу, подсчитывающую сколько раз в данный текст входит буква «А».
Заведем «переменную-копилку», в которую будем класть единичку каждый раз, как встретим в слове букву «А». Таким образом, раз мы должны будем проверить каждый символ текста, то налицо наличие в программе счетного цикла FOR.
Решение:
- INPUT "VVEDITE TEKST: "; TEXT$
- KA = 0
- FOR I = 1 TO LEN(TEXT$)
- IF MID$(TEXT$, I, 1) = "A" THEN KA = KA + 1
- NEXT
- PRINT "V TEKSTE"; TEXT$; " BUKVA *A* VSTRECHAETSYA"; KA; "RAZ(A)"

Рисунок 3 – Решение второй задачи

Рисунок 4 – Результат выполнения второй задачи
Рассмотрим работу программы на конкретном примере.
Пусть:
- TEXT$ = "МАМА"
- KA = 0
I = 1:
Копируем первую букву – "М". Проверяем "М" = "А"? Нет. Идем дальше.
I = 2:
Копируем вторую букву – "А". Проверяем "А" = "А"? Да. Выполняем KA = KA + 1
I = 3:
Копируем третью букву – "М". Проверяем "М" = "А"? Нет. Идем дальше.
I = 4:
Копируем четвертую букву – "А". Проверяем "А" = "А"? Да. Выполняем KA = KA + 1
Таким образом, после выполнения программы в ячейке KA будет лежать число 2.
Например, если TEXT$ = "ABRAKADABRA", то ответ будет 5 раз. Eсли TEXT$ = "CHISLO", то ответ: 0 раз.
Задача №3. Составьте программу, проверяющую является ли заданное слово «перевертышем» (палиндромом) (т.е. читается ли слева направо и справа налево).
Заведем символьную переменную, в которую символ за символом, начиная с последнего перепишем заданное слово, а затем сравним его с исходным. Если они равны, то слово – перевертыш.
Решение:
- INPUT "VVEDITE SLOVO: "; B$
- A$ = ""
- FOR I = LEN(B$) TO 1 STEP -1
- A$ = A$ + MID$(B$, I, 1)
- NEXT
- IF (A$ = B$) THEN
- PRINT "SLOVO PEREVERTYSH"
- ELSE
- PRINT "SLOVO NE YAVLYAETSYA PEREVERTYSHEM"
- END IF

Рисунок 5 – Решение третьей задачи

Рисунок 6 – Результат выполнения третьей задачи
Второй вариант решения задачи этой выглядит так:
- INPUT "VVEDITE SLOVO: ", A$
- FOR I = 1 TO LEN(A$) \ 2
- IF (MID$(A$, I, 1) <> MID$(A$, LEN(A$) - I + 1, 1)) THEN F = 1
- NEXT
- IF (F = 0) THEN PRINT "PALINDROM" ELSE PRINT "NE PALINDROM"

Рисунок 7 – Решение третьей задачи другим способом

Рисунок 8 – Результат выполнения третьей задачи
Общий алгоритм:
Последовательно берём буквы, одинаково отстоящие от краёв слова.
- 1 и N
- 2 и N - 1
- 3 и N - 2
- ...
то есть I и N - I + 1 (где N – длина слова). Сравниваем эти буквы друг с другом, если найдём неравенство, то F = 1, не найдём то F = 0
Задача №4. Написать программу переворачивающую слово.
Решение:
- INPUT "VVEDITE SLOVO: "; B$
- A$ = ""
- FOR I = LEN(B$) TO 1 STEP -1
- A$ = A$ + MID$(B$, I, 1)
- NEXT I
- PRINT "PEREVERNUTOYE SLOVO: "; A$
Рисунок 11 – Решение четвёртой задачи
Рисунок 12 – Результат выполнения четвёртой задачи
Задача №5. Задан текст. Подсчитать каких букв в тексте больше «А» или «О» и на сколько.
Решение:
- INPUT "VVEDITE TEKST ", T$
- L = LEN(T$)
- KA = 0: KO = 0
- FOR I = 1 TO L
- IF (MID$(T$, I, 1) = "A") OR (MID$(T$, I, 1) = "a") THEN KA = KA + 1
- IF (MID$(T$, I, 1) = "O") OR (MID$(T$, I, 1) = "o") THEN KO = KO + 1
- NEXT
- IF (KA > KO) THEN PRINT "BUKV -A- BOLSHE, CHEM O NA "; KA - KO
- IF (KO > KA) THEN PRINT "BUKV -O- BOLSHE, CHEM A NA "; KO - KA
- IF (KA = KO) THEN PRINT "BUKV -A- I -O- RAVNOYE KOLICHESTVO"

Рисунок 13 – Решение пятой задачи

Рисунок 14 – Результат выполнения пятой задачи
Задача №6. Подсчитать сколько предложений в тексте.
Решение:
- INPUT "VVEDITE TEKST: ", T$
- L = LEN(T$)
- K = 0
- FOR I = 1 TO L
- IF MID$(T$, I, 1) = "." OR MID$(T$, I, 1) = "!" OR MID$(T$, I, 1) = "?" THEN
- K = K + 1
- END IF
- NEXT I
- PRINT "V TEKSTE "; K; " PREDLOZHENIY"

Рисунок 15 – Решение шестой задачи

Рисунок 16 – Результат выполнения шестой задачи
Задача №7. Напечатать самое длинное слово из заданного текста: «TSEL STATISTIKI SOSREDOTOCHIVAYETSYA V PREDOSTAVLENII FAKTOV V NAIBOLEYE SZHATOY FORME».
Решение:
- T$ = "TSEL STATISTIKI SOSREDOTOCHIVAYETSYA V PREDOSTAVLENII FAKTOV V NAIBOLEYE SZHATOY FORME"
- 'DOBAVLYAYEM K FRAZE PROBEL, CHTOBY VSE SLOVA NACHINALIS S PROBELA (LEGCHE ISKAT SLOVO)
- T$ = " " + T$
- DIM A$(100) 'ZADAYEM MASSIV SLOV
- FOR I = 1 TO LEN(T$) 'PROKHODIM PO SIMVOLAM FRAZY
- IF MID$(T$, I, 1) = " " THEN K = K + 1 ELSE A$(K) = A$(K) + MID$(T$, I, 1)
- 'ESLI NASHLI PROBEL, ZNACHIT NACHINAYETSYA SLOVO, SCHETCHIK UVELICHIVAYEM NA 1,
- 'A YESLI NE PROBEL, TO K OCHEREDNOMU SLOVU DOBAVLYAYEM SIMVOL IZ FRAZY
- NEXT
- MAX = LEN(A$(1)) 'ZADAYEM MAKSIMUM = DLINE 1 SLOVA
- N = 1 'NOMER MAKSIMALNOGO ELEMENTA, POKA NE NASHLI DRUGOY,=1
- FOR I = 1 TO K
- 'ESLI NASHLI SLOVO DLINNEYE, TO ONO BUDET MAKS
- IF LEN(A$(I)) > MAX THEN MAX = LEN(A$(I)): N = I
- 'A NOMER STANET =I
- NEXT
- PRINT A$(N)

Рисунок 17 – Решение седьмой задачи

Рисунок 18 – Результат выполнения седьмой задачи
Задача №8. Определить в тексте наличие сдвоенных символов. Сдвоенные символы вывести на экран. Определить их общее количество. Если сдвоенных символов нет, то выдать сообщение.
Решение:
- INPUT "VVEDITE SIMVOLNUYU STROKU - ", S$
- K = 0
- PRINT "SDVOYENNYYE SIMVOLY:"
- FOR I = 2 TO LEN(S$)
- IF (MID$(S$, I, 1) = MID$(S$, I - 1, 1)) THEN
- K = K + 1
- PRINT MID$(S$, I - 1, 2)
- END IF
- NEXT
- IF (K = 0) THEN PRINT "SDVOYENNYKH SIMVOLOV NE VSTRECHAYETSYA"
- IF (K > 0) THEN PRINT "KOLICHESTVO SDVOYENNYKH SIMVOLOV SOSTAVLYAYET - "; K
Рисунок 19 – Решение восьмой задачи

Рисунок 20 – Результат выполнения восьмой задачи
Спасибо за прочтение этой статьи.