Составить из букв введенной строки слова

Вводится строка, состоящая из букв и пробелов. Составить из входящих в нее букв несколько любых их сочетаний (слов) любой длины. Каждую букву строки можно использовать неограниченное количество раз.

Переменные:

  • s — введенная строка;
  • w — составляемое очередное слово;
  • lslw — длины введенной строки и составляемого слова;
  • 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

Оцените статью
Добавить комментарий