Поиск повторяющихся слов в тексте - QBasic

Узнай цену своей работы

Формулировка задачи:

Есть задача. Дан текст заканчивающийся точкой. Определить количество повторяющихся слов в нем. Она впринцепи готова, только есть одно но и её надо доработать в этой задаче.
Листинг программы
  1. CLS
  2. PRINT "Поиск повторяющихся слов в тексте"
  3. PRINT "Введите текст:"
  4. INPUT a$
  5. n = LEN(a$)
  6. DIM b(n) AS STRING
  7. FOR i = 1 TO n
  8. IF MID$(a$, i, 1) = " " OR MID$(a$, i, 10) = "." THEN
  9. k = k + 1: b(k) = MID$(a$, p + 1, i - p - 1): p = i
  10. END IF
  11. NEXT i
  12. DIM ss(k, 2) AS STRING
  13. FOR i = 1 TO k - 1
  14. p = 0
  15. c = 0
  16. b(i) = LTRIM$(b(i))
  17. b(i) = RTRIM$(b(i))
  18. IF b(i) <> "" THEN
  19. FOR j = i + 1 TO k
  20. IF b(i) = b(j) THEN
  21. IF p = 0 THEN
  22. ss(i, 1) = b(i)
  23. p = 1
  24. END IF
  25. c = c + 1
  26. b(j) = ""
  27. END IF
  28. NEXT j
  29. ss(i, 2) = STR$(c + 1)
  30. END IF
  31. NEXT i
  32. FOR i = 1 TO k
  33. IF ss(i, 1) <> "" THEN
  34. PRINT"Слово "; ss(i, 1); "повторяется в тексте "; ss(i, 2); " раз(а)"
  35. ELSE PRINT "В тексте нет повторяющихся слов": END
  36. END IF
  37. NEXT i
Вот пример: Мама мыла раму мыла.

Он мне выдаёт "В тексте нет повторяющихся слов"

Где тут ошибка?

Решение задачи: «Поиск повторяющихся слов в тексте»

textual
Листинг программы
  1. INPUT "vvedite text"; a$
  2. DIM b$(LEN(a$))
  3. FOR i = 1 TO LEN(a$)
  4.     IF MID$(a$, i, 1) <> " " AND MID$(a$, i, 1) <> "." THEN
  5.         c$ = c$ + MID$(a$, i, 1)
  6.     ELSE k = k + 1: b$(k) = c$: c$ = ""
  7.     END IF
  8. NEXT
  9. FOR i = 1 TO k
  10.     FOR j = i + 1 TO k
  11.         IF b$(i) = b$(j) THEN f = 1: b$(j) = STR$(j)
  12.     NEXT
  13.     IF f = 1 THEN q = q + 1: f = 0
  14. NEXT
  15. PRINT "q ="; q

Объяснение кода листинга программы

  1. Пользователю предлагается ввести текст.
  2. Объявляется массив b$ для хранения слов из введенного текста.
  3. Происходит проход по каждому символу введенного текста.
  4. Проверяется, является ли текущий символ пробелом или точкой.
  5. Если символ не является пробелом или точкой, он добавляется в конец переменной c$.
  6. Если текущий символ является пробелом или точкой, счетчик k увеличивается на 1, значение переменной c$ присваивается элементу массива b$ с индексом k, и переменная c$ очищается.
  7. Происходит проход по всем элементам массива b$.
  8. Для каждого элемента b$ проверяется, есть ли такой же элемент в оставшейся части массива.
  9. Если элемент повторяется, счетчик q увеличивается на 1.
  10. Выводится значение переменной q.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы