Распечатать слова из файла - QBasic
Формулировка задачи:
Эта программа вытаскивает слова из файла 1.txt
и распечатывает их в файл 2.txt. Быстродействие
на QBasic не менее 50 000 слов/сек
Вопрос
Как преобразовать эту программу для вынимания из
файла целых предложений? Концом предложения считать
. (точку) ! (восклицательный знак) ? (вопросительный. знак)
примечание
Сложность в том, что предложение может начаться на одной
строке, а закончится на другой. Да и предложений может быть
несколько на строку...
Листинг программы
- CLS
- DIM s AS STRING
- DIM t AS STRING
- CONST p = " "
- OPEN "1.txt" FOR INPUT AS #1
- OPEN "2.txt" FOR OUTPUT AS #2
- DO
- LINE INPUT #1, s
- DO
- i = INSTR(s, ".")
- IF i > 0 THEN MID$(s, i, 1) = p
- LOOP UNTIL i = 0
- DO
- i = INSTR(s, ",")
- IF i > 0 THEN MID$(s, i, 1) = p
- LOOP UNTIL i = 0
- DO
- i = INSTR(s, "?")
- IF i > 0 THEN MID$(s, i, 1) = p
- LOOP UNTIL i = 0
- DO
- i = INSTR(s, "!")
- IF i > 0 THEN MID$(s, i, 1) = p
- LOOP UNTIL i = 0
- DO
- i = INSTR(s, " ")
- IF i > 0 THEN s = LEFT$(s, i - 1) + p + MID$(s, i + 2)
- LOOP UNTIL i = 0
- s = LTRIM$(RTRIM$(s))
- s = p + s + p
- k1 = 1
- DO
- k2 = INSTR(k1 + 1, s, p)
- t = MID$(s, k1 + 1, k2 - k1 - 1)
- PRINT #2, t
- k1 = k2
- LOOP UNTIL k2 = LEN(s)
- LOOP UNTIL EOF(1)
- END
Решение задачи: «Распечатать слова из файла»
textual
Листинг программы
- DIM S AS STRING
- FOR I = 1 TO 23840
- S = S + "1"
- NEXT
- PRINT S
- PRINT I - 1
Объяснение кода листинга программы
- Устанавливается переменная S типа STRING.
- Задаётся цикл от 1 до 23840 (включительно).
- В каждой итерации цикла к переменной S добавляется строка
1
. - После завершения цикла выводится на экран значение переменной S.
- Выводится на экран значение переменной I, уменьшенное на 1.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д