1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | CLS Razdelitel$ = " " 'Razdelitel stroki again: INPUT "Vvedite stroku:"; a$ olda$ = a$ IF a$ = "" THEN PRINT "Vvedite zanovo" INPUT "Vvedite kol-vo slov:"; n% ' Proveryaem kol-vo slov v predlozhenii sl% = 0 : stat% = 0 : oldstat% = 1 FOR i% = 1 TO LEN(a$) IF MID$(a$, i%, 1 ) = Razdelitel$ THEN stat% = 1 IF oldstat% = 1 AND stat% = 0 THEN sl% = sl% + 1 oldstat% = stat% stat% = 0 NEXT ' Udalyaem sleva vse razdelitelnie znaki FOR i% = 1 TO LEN(a$) STEP - 1 IF MID$(a$, i%, 1 ) = Razdelitel$ THEN a$ = RIGHT$(a$, LEN(a$) - 1 ) ELSE EXIT FOR NEXT i% ' Udalyaem sprava vse razdelitelnie znaki FOR i% = LEN(a$) TO 1 STEP - 1 IF MID$(a$, i%, 1 ) = Razdelitel$ THEN a$ = LEFT$(a$, LEN(a$) - 1 ) ELSE EXIT FOR NEXT i% ' i stavim vmesto nikh 1 razdelitel sprava a$ = a$ + Razdelitel$ ' Tsiklicheski vertim slova FOR i = 1 TO n% stat% = 0 : oldstat% = 0 DO LfZn$ = MID$(a$, 1 , 1 ) oldstat% = stat% stat% = 0 IF LfZn$ = Razdelitel$ THEN stat% = 1 IF oldstat% = 1 AND stat% = 0 THEN EXIT DO a$ = RIGHT$(a$, LEN(a$) - 1 ) + LfZn$ LOOP NEXT CLS PRINT "ishdnaya stroka:"; olda$ PRINT "Novaya stroka:"; a$ |
Следующий вариант
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | Rzd$ = " " 'Разделитель Again: CLS: INPUT "Vvedite stroku :", a$ ' Ввод строки IF a$ = "" GOTO Again ' Если строка пуста, вводим заново ' IF MID$(a$, LEN(a$), 1 ) <> Rzd$ THEN a$ = a$ + Rzd$ INPUT "Skolko slov dvigat' :", n PRINT "ishodnaya:";: WRITE a$ IF n = 0 GOTO Ok ReFnd: IF MID$(a$, 1 , 1 ) <> Rzd$ AND rg = 0 THEN s = s + 1 FOR i = 1 TO LEN(a$) - 1 'Считаем слова -> s IF MID$(a$, i, 1 ) = Rzd$ AND MID$(a$, i + 1 , 1 ) <> Rzd$ THEN s = s + 1 : IF rg = 1 AND s = d THEN r = i END IF NEXT IF rg = 0 THEN d = n MOD s: rg = 1 : s = 0 : GOTO ReFnd ' На сколько слов дигать Ok: PRINT "Resultat :";: WRITE RIGHT$(a$, LEN(a$) - r) + LEFT$(a$, r) |
Тестирование выполнено в программе QB64 ( Скачать )