Программы на Бейсике:
а) Замена одной буквы на другую:
10 INPUT "Введите слово: ", S$$
20 INPUT "Введите букву, которую нужно заменить: ", OLDL$$
30 INPUT "Введите букву, на которую нужно заменить: ", NEWL$$
40 NEW_S$$ = ""
50 FOR I = 1 TO LEN(S$$)
60 IF MID$$(S$$, I, 1) = OLDL$$ THEN
70 NEW_S$$ = NEW_S$$ + NEWL$$
80 ELSE
90 NEW_S$$ = NEW_S$$ + MID$$(S$$, I, 1)
100 END IF
110 NEXT I
120 PRINT "Измененное слово: "; NEW_S$$
130 END
- Объяснение:
- Программа проходит по каждой букве исходного слова (
S$$). - Если текущая буква совпадает с
OLDL$$, то к новой строке NEW_S$$ добавляется NEWL$$. - Иначе, добавляется исходная буква.
б) Замена части "ДОМ" на "РОД":
10 INPUT "Введите слово: ", S$$
20 OLD_SUB$$ = "ДОМ"
30 NEW_SUB$$ = "РОД"
40 POS = INSTR(S$$, OLD_SUB$$)
50 IF POS = 0 THEN GOTO 90
60 LEFT_PART$$ = LEFT$$(S$$, POS - 1)
70 RIGHT_PART$$ = RIGHT$$(S$$, LEN(S$$) - POS - LEN(OLD_SUB$$) + 1)
80 S$$ = LEFT_PART$$ + NEW_SUB$$ + RIGHT_PART$$
90 PRINT "Измененное слово: "; S$$
100 END
- Объяснение:
INSTR находит позицию подстроки "ДОМ".- Если найдена, слово разбивается на три части: до подстроки, сама подстрока и после подстроки.
- Затем эти части собираются заново, но с заменой "ДОМ" на "РОД".
- Эта программа заменяет только первое вхождение. Для замены всех вхождений, как в пункте (в), нужна другая логика.
в) Замена части "ДЕТЕКТИВ" на "РОМАН" (все вхождения):
10 INPUT "Введите текст: ", TEXT$$
20 OLD_SUB$$ = "ДЕТЕКТИВ"
30 NEW_SUB$$ = "РОМАН"
40 REPLACED_TEXT$$ = ""
50 START_POS = 1
60 WHILE START_POS <= LEN(TEXT$$)
70 POS = INSTR(START_POS, TEXT$$, OLD_SUB$$)
80 IF POS = 0 THEN
90 REPLACED_TEXT$$ = REPLACED_TEXT$$ + MID$$(TEXT$$, START_POS)
100 START_POS = LEN(TEXT$$) + 1 ' Выход из цикла
110 ELSE
120 REPLACED_TEXT$$ = REPLACED_TEXT$$ + MID$$(TEXT$$, START_POS, POS - START_POS)
130 REPLACED_TEXT$$ = REPLACED_TEXT$$ + NEW_SUB$$
140 START_POS = POS + LEN(OLD_SUB$$)
150 END IF
160 WEND
170 PRINT "Измененный текст: " + REPLACED_TEXT$$
180 END
- Объяснение:
- Программа ищет подстроку
OLD_SUB$$ ("ДЕТЕКТИВ") в тексте TEXT$$, начиная с позиции START_POS. - Если подстрока найдена (
POS > 0): - К результату
REPLACED_TEXT$$ добавляется часть текста до найденной подстроки. - Затем добавляется новая подстрока
NEW_SUB$$ ("РОМАН"). START_POS обновляется, чтобы поиск продолжился после найденной подстроки.
- Если подстрока не найдена (
POS = 0): - Вся оставшаяся часть исходного текста добавляется к результату, и цикл завершается.
- В итоге
REPLACED_TEXT$$ содержит весь текст с заменами.