Вводится строка, состоящая из букв и пробелов. Составить из входящих в нее букв несколько любых их сочетаний (слов) любой длины. Каждую букву строки можно использовать неограниченное количество раз.
Переменные:
- s — введенная строка;
- w — составляемое очередное слово;
- ls, lw — длины введенной строки и составляемого слова;
- i — счетчик слов (номер составляемого слова);
- j — счетчик букв (номер буквы) составляемого слова;
- let — номер взятой буквы из введенной строки.
После ввода строки измерим ее длину и запишем полученное значение в переменную ls. Допустим, надо составить пять случайных буквосочетаний. Следовательно, все дальнейшие действия будут выполняться в цикле, количество итераций которого равно 5.
Пусть длина очередного слова определяется случайно и может варьировать от 2 символов до 7. Тогда переменной lw надо присвоить случайное число от 2 до 7. Ее значение определяет, сколько раз надо будет взять букву из введенной строки.
Перед тем как собирать слово, переменной w присваивается пустая строка, а j присваивается 0. Далее в цикле (пока j < lw) берется случайный символ из строки. Для этого используется переменная ls (длина строки). Если этот символ не пробел, то он добавляется в конец строки w, а переменная j увеличивается на 1. После того как слово собрано, оно выводится на экран.
Pascal
var
s, w: string;
ls, lw, i, j, let: byte;
begin
readln(s);
ls := length(s);
randomize;
for i:=1 to 5 do begin
lw := random(6) + 2;
w := '';
j := 0;
while j < lw do begin
let := random(ls)+1;
if s[let] <> ' ' then begin
w := w + s[let];
j := j + 1;
end;
end;
writeln(w);
end;
end.
who where how big
eo
oh
owih
owwwog
ehe
Язык Си
#include < stdio.h>
main() {
char s[100], w[8], c;
short ls, lw, i, j, let;
ls = 0;
while ((s[ls] = getchar()) != '\n')
ls += 1;
s[ls] = '\0';
srand(time(NULL));
for (i=0; i < 5; i++) {
lw = rand() % 6 + 2;
j = 0;
while (j < lw) {
let = rand() % ls;
if (s[let] != ' ') {
w[j] = s[let];
j += 1;
}
}
w[j] = '\0';
printf("%s\n", w);
}
}
computer printer monitor
oumrmr
mp
nrrte
ripuir
re
Python
# Вариант 1 - без использования строковых методов
from random import randint
# исходная строка и ее длина
s = input()
ls = len(s)
# количество слов = 5
for i in range(5):
# случайная длина слова
lw = randint(2, 7)
# слово
w = ''
j = 0
while j < lw:
# индекс случайной буквы
let = randint(0, ls-1)
if s[let] != ' ':
w += s[let]
j += 1
print(w)
# Вариант 2 - со строковыми методами и функцией choice()
from random import randint, choice
# исходная строка
s = input()
# разделяем строку на слова по пробелам
s = s.split()
# обратно превращаем список в строку,
# но без пробелов
s = ''.join(s)
# количество слов = 5
for i in range(15):
# случайная длина слова
lw = randint(2, 7)
# список букв для слова
# количество букв = lw
# choice() вызывается lw раз
# каждый раз выбирает случайную букву из s
w = [choice(s) for j in range(lw)]
# превращаем список в строку
w = ''.join(w)
print(w)
один два три четыре пять
ар
оид
ррио
дарятыч
врныд
КуМир
алг
нач
лит s, w
цел ls, lw, i, j, let
ввод s
ls := длин(s)
нц для i от 1 до 5
lw := irnd(5) + 2
w := ""
j := 0
нц пока j < lw
let := irnd(ls)
если s[let] <> " " то
w := w + s[let]
j := j + 1
все
кц
вывод w, нс
кц
кон
аааааааа иииииииии ююююююююююю яяяяяяяя
юаюиа
яии
ааиюяюи
ияиа
юяяюаяю
Basic-256
input s$
ls = length(s$)
for i=1 to 5
lw = int(rand * 6) + 2
w$ = ""
j = 0
while j < lw
let = int(rand * ls) + 1
if mid(s$,let,1) <> " " then
w$ = w$ + mid(s$,let,1)
j = j + 1
endif
endwhile
print w$
next i
strong em table ul li ol
lgnlrbr
lnllrts
tlulre
lotnt
runls