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

Задача

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

Пояснение к задаче и алгоритм решения

Переменные:

  • 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.

Пример(ы) выполнения программы на языке Pascal

who where how big
eo
oh
owih
owwwog
ehe

Исходный код на языке программирования C

#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);
    }
}

Пример(ы) выполнения программы на языке C

computer printer monitor
oumrmr
mp
nrrte
ripuir
re

Исходный код на языке программирования Python

from random import random
 
s = input()
ls = len(s)
for i in range(5):
    lw = int(random() * 6) + 2
    w = ''
    j = 0
    while j < lw:
        let = int(random() * ls)
        if s[let] != ' ':
            w += s[let]
            j += 1
    print(w)

Пример(ы) выполнения программы на языке Python

один два три четыре пять
ар
оид
ррио
дарятыч
врныд

Исходный код на языке программирования КуМир

алг
нач
  лит 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

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

Пример(ы) выполнения программы на языке Basic

strong em table ul li ol
lgnlrbr
lnllrts
tlulre
lotnt
runls

Тема

Строки

Уровень сложности

Средний

Дата публикации