QBASICBOOK.ru: сайт про QB64

Опубликовано: 2018-06-07 08:00:00

Решение некоторых задач на строки

Задача №1. Составьте программу, заменяющую все восклицательные знаки («!») в тексте на точки («.»).

Решение:


  1. INPUT "VVEDITE TEKST: "; B$
  2. FOR I = 1 TO LEN(B$)
  3.     IF MID$(B$, I, 1) = "!" THEN MID$(B$, I, 1) = "."
  4. NEXT
  5. PRINT "PREOBRAZOVANNYY TEKST: "; B$

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

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

Рисунок 2 – Результат выполнения первой задачи

Рисунок 2 – Результат выполнения первой задачи

Все просто. Посимвольно проходим всю введённую строку, выделяя в тексте символ с номером I. Если этот символ – восклицательный знак, то выделенный символ заменяем на запятую.

Задача №2. Составьте программу, подсчитывающую сколько раз в данный текст входит буква «А».

Заведем «переменную-копилку», в которую будем класть единичку каждый раз, как встретим в слове букву «А». Таким образом, раз мы должны будем проверить каждый символ текста, то налицо наличие в программе счетного цикла FOR.

Решение:


  1. INPUT "VVEDITE TEKST: "; TEXT$
  2. KA = 0
  3. FOR I = 1 TO LEN(TEXT$)
  4.     IF MID$(TEXT$, I, 1) = "A" THEN KA = KA + 1
  5. NEXT
  6. PRINT "V TEKSTE"; TEXT$; " BUKVA *A* VSTRECHAETSYA"; KA; "RAZ(A)"

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

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

Рисунок 4 – Результат выполнения второй задачи

Рисунок 4 – Результат выполнения второй задачи

Рассмотрим работу программы на конкретном примере.

Пусть:

I = 1:
Копируем первую букву – "М". Проверяем "М" = "А"? Нет. Идем дальше.

I = 2:
Копируем вторую букву – "А". Проверяем "А" = "А"? Да. Выполняем KA = KA + 1

I = 3:
Копируем третью букву – "М". Проверяем "М" = "А"? Нет. Идем дальше.

I = 4:
Копируем четвертую букву – "А". Проверяем "А" = "А"? Да. Выполняем KA = KA + 1

Таким образом, после выполнения программы в ячейке KA будет лежать число 2.

Например, если TEXT$ = "ABRAKADABRA", то ответ будет 5 раз. Eсли TEXT$ = "CHISLO", то ответ: 0 раз.

Задача №3. Составьте программу, проверяющую является ли заданное слово «перевертышем» (палиндромом) (т.е. читается ли слева направо и справа налево).

Заведем символьную переменную, в которую символ за символом, начиная с последнего перепишем заданное слово, а затем сравним его с исходным. Если они равны, то слово – перевертыш.

Решение:


  1. INPUT "VVEDITE SLOVO: "; B$
  2. A$ = ""
  3. FOR I = LEN(B$) TO 1 STEP -1
  4.     A$ = A$ + MID$(B$, I, 1)
  5. NEXT
  6. IF (A$ = B$) THEN
  7.     PRINT "SLOVO PEREVERTYSH"
  8. ELSE
  9.     PRINT "SLOVO NE YAVLYAETSYA PEREVERTYSHEM"
  10. END IF

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

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

Рисунок 6 – Результат выполнения третьей задачи

Рисунок 6 – Результат выполнения третьей задачи

Второй вариант решения задачи этой выглядит так:


  1. INPUT "VVEDITE SLOVO: ", A$
  2. FOR I = 1 TO LEN(A$) \ 2
  3.     IF (MID$(A$, I, 1) <> MID$(A$, LEN(A$) - I + 1, 1)) THEN F = 1
  4. NEXT
  5. IF (F = 0) THEN PRINT "PALINDROM" ELSE PRINT "NE PALINDROM"

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

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

Рисунок 8 – Результат выполнения третьей задачи

Рисунок 8 – Результат выполнения третьей задачи

Общий алгоритм:

Последовательно берём буквы, одинаково отстоящие от краёв слова.

то есть I и N - I + 1 (где N – длина слова). Сравниваем эти буквы друг с другом, если найдём неравенство, то F = 1, не найдём то F = 0

Задача №4. Написать программу переворачивающую слово.

Решение:


  1. INPUT "VVEDITE SLOVO: "; B$
  2. A$ = ""
  3. FOR I = LEN(B$) TO 1 STEP -1
  4.     A$ = A$ + MID$(B$, I, 1)
  5. NEXT I
  6. PRINT "PEREVERNUTOYE SLOVO: "; A$

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

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

Рисунок 12 – Результат выполнения четвёртой задачи 

Рисунок 12 – Результат выполнения четвёртой задачи

Задача №5. Задан текст. Подсчитать каких букв в тексте больше «А» или «О» и на сколько.

Решение:


  1. INPUT "VVEDITE TEKST ", T$
  2. L = LEN(T$)
  3. KA = 0: KO = 0
  4. FOR I = 1 TO L
  5.     IF (MID$(T$, I, 1) = "A"OR (MID$(T$, I, 1) = "a"THEN KA = KA + 1
  6.     IF (MID$(T$, I, 1) = "O"OR (MID$(T$, I, 1) = "o"THEN KO = KO + 1
  7. NEXT
  8. IF (KA > KO) THEN PRINT "BUKV -A- BOLSHE, CHEM O NA "; KA - KO
  9. IF (KO > KA) THEN PRINT "BUKV -O- BOLSHE, CHEM A NA "; KO - KA
  10. IF (KA = KO) THEN PRINT "BUKV -A- I -O- RAVNOYE KOLICHESTVO"

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

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

Рисунок 14 – Результат выполнения пятой задачи

Рисунок 14 – Результат выполнения пятой задачи

Задача №6. Подсчитать сколько предложений в тексте.

Решение:


  1. INPUT "VVEDITE TEKST: ", T$
  2. L = LEN(T$)
  3. K = 0
  4. FOR I = 1 TO L
  5.     IF MID$(T$, I, 1) = "." OR MID$(T$, I, 1) = "!" OR MID$(T$, I, 1) = "?" THEN
  6.         K = K + 1
  7.     END IF
  8. NEXT I
  9. PRINT "V TEKSTE "; K; " PREDLOZHENIY"

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

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

Рисунок 16 – Результат выполнения шестой задачи

Рисунок 16 – Результат выполнения шестой задачи

Задача №7. Напечатать самое длинное слово из заданного текста: «TSEL STATISTIKI SOSREDOTOCHIVAYETSYA V PREDOSTAVLENII FAKTOV V NAIBOLEYE SZHATOY FORME».

Решение:


  1. T$ = "TSEL STATISTIKI SOSREDOTOCHIVAYETSYA V PREDOSTAVLENII FAKTOV V NAIBOLEYE SZHATOY FORME"
  2. 'DOBAVLYAYEM K FRAZE PROBEL, CHTOBY VSE SLOVA NACHINALIS S PROBELA (LEGCHE ISKAT SLOVO)
  3. T$ = " " + T$
  4. DIM A$(100) 'ZADAYEM MASSIV SLOV
  5. FOR I = 1 TO LEN(T$) 'PROKHODIM PO SIMVOLAM FRAZY
  6.     IF MID$(T$, I, 1) = " " THEN K = K + 1 ELSE A$(K) = A$(K) + MID$(T$, I, 1)
  7.     'ESLI NASHLI PROBEL, ZNACHIT NACHINAYETSYA SLOVO, SCHETCHIK UVELICHIVAYEM NA 1,
  8.     'A YESLI NE PROBEL, TO K OCHEREDNOMU SLOVU DOBAVLYAYEM SIMVOL IZ FRAZY
  9. NEXT
  10. MAX = LEN(A$(1)) 'ZADAYEM MAKSIMUM = DLINE 1 SLOVA
  11. N = 1 'NOMER MAKSIMALNOGO ELEMENTA, POKA NE NASHLI DRUGOY,=1
  12. FOR I = 1 TO K
  13.     'ESLI NASHLI  SLOVO DLINNEYE, TO ONO BUDET MAKS
  14.     IF LEN(A$(I)) > MAX THEN MAX = LEN(A$(I)): N = I
  15.     'A NOMER STANET =I
  16. NEXT
  17. PRINT A$(N)

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

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

Рисунок 18 – Результат выполнения седьмой задачи

Рисунок 18 – Результат выполнения седьмой задачи

 

Задача №8. Определить в тексте наличие сдвоенных символов. Сдвоенные символы вывести на экран. Определить их общее количество. Если сдвоенных символов нет, то выдать сообщение.

Решение:


  1. INPUT "VVEDITE SIMVOLNUYU STROKU - ", S$
  2. K = 0
  3. PRINT "SDVOYENNYYE SIMVOLY:"
  4. FOR I = 2 TO LEN(S$)
  5.     IF (MID$(S$, I, 1) = MID$(S$, I - 1, 1)) THEN
  6.         K = K + 1
  7.         PRINT MID$(S$, I - 1, 2)
  8.     END IF
  9. NEXT
  10. IF (K = 0) THEN PRINT "SDVOYENNYKH SIMVOLOV NE VSTRECHAYETSYA"
  11. IF (K > 0) THEN PRINT "KOLICHESTVO SDVOYENNYKH SIMVOLOV SOSTAVLYAYET - "; K

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

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

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

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

Спасибо за прочтение этой статьи.

 

Прикрепленные файлы:

< Предыдущая статья
Решение задачи на сумматор при помощи цикла с параметром
Следующая статья >
Получение целого случайного числа

Выделите опечатку и нажмите Ctrl + Enter, чтобы отправить сообщение об ошибке.