По заданной фразе a$ сформировать и вывести фразы, слова в которых являются всевозможными перестановками слов исходной фразы. исходная информация вводится с клавиатуры(qbasic)
INPUT s$ k = LEN(s$) + 1 FOR i = 1 TO k IF MID$(s$, i, 1) = " " THEN n = n + 1 'считаем число слов NEXT i n = n + 1 DIM f$(n) DIM z(n) j = 1 FOR i = 1 TO k 'разрезаем фразу на слова и заносим их в массив f t$ = MID$(s$, i, 1) f$(j) = f$(j) + t$ IF t$ = " " THEN j = j + 1 NEXT i f$(n) = f$(n) + " " FOR i = 1 TO n 'считаем в СС с основанием n, исключая повтор цифр z(i) = i NEXT i DO WHILE z(0) = 0 z(n) = z(n) + 1 k = n DO WHILE z(k) > n z(k) = 1 k = k - 1 z(k) = z(k) + 1 LOOP p = 0 FOR i = 1 TO n - 1 'исключаем числа с повторяющимися цифрами FOR j = i + 1 TO n IF z(i) = z(j) THEN p = 1 NEXT j NEXT i IF p = 0 THEN 'выводим соответствующие числам слова FOR j = 1 TO n PRINT f$(z(j)); NEXT j PRINT END IF LOOP
k = LEN(s$) + 1
FOR i = 1 TO k
IF MID$(s$, i, 1) = " " THEN n = n + 1 'считаем число слов
NEXT i
n = n + 1
DIM f$(n)
DIM z(n)
j = 1
FOR i = 1 TO k 'разрезаем фразу на слова и заносим их в массив f
t$ = MID$(s$, i, 1)
f$(j) = f$(j) + t$
IF t$ = " " THEN j = j + 1
NEXT i
f$(n) = f$(n) + " "
FOR i = 1 TO n 'считаем в СС с основанием n, исключая повтор цифр
z(i) = i
NEXT i
DO WHILE z(0) = 0
z(n) = z(n) + 1
k = n
DO WHILE z(k) > n
z(k) = 1
k = k - 1
z(k) = z(k) + 1
LOOP
p = 0
FOR i = 1 TO n - 1 'исключаем числа с повторяющимися цифрами
FOR j = i + 1 TO n
IF z(i) = z(j) THEN p = 1
NEXT j
NEXT i
IF p = 0 THEN 'выводим соответствующие числам слова
FOR j = 1 TO n
PRINT f$(z(j));
NEXT j
PRINT
END IF
LOOP