Фильтр строки

Задача

Программа выделяет из строки (введенной пользователем) числа (только целые) и помещает их в массив, содержимое которого затем выводится на экран.

Решение

После того как строка считывается с ввода, измеряется ее длина (функция length).

Далее стока просматривается посимвольно во внешнем цикле while.

В переменную a записывается очередной символ из строки.

Внутренний цикл while начинает выполняться лишь в том случае, если очередным символом является цифра. При этом уже во внутреннем цикле происходит переход к следующему символу. Символы одного числа конкатенируются (соединяются) в строке str.

Внутренний цикл while останавливается, когда очередной символ не цифра.

Если (if) строка не пустая, то ее содержимое добавляется в массив, а сама стока стирается.

Программа на языке Паскаль: 

 

var
    arr: array[1..100] of string;
    i, j: integer;
    strinput, str: string;
    a: char;
    n: byte;
 
begin
    i := 1;
    j := 1;
    readln(strinput);
    n := length(strinput);
    while i <= n do begin
        a := strinput[i];
        while (a >= '0') and (a <= '9') do begin
            str := str + a;
            i := i + 1;
            a := strinput[i]
        end;
        i := i + 1;
        if str <> '' then begin
            arr[j] := str;
            j := j + 1;
            str := '';
        end;
    end;
 
    for i := 1 to j - 1 do
        writeln(arr[i]);
 
readln
end.	

 

Тема

Строки

Уровень

Сложные задачи

Комментарии

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

Например, ввели abc1234def 45 prmn 12 dsaasd.
Должно выводиться 45 12,
а не abc1234def 45 12.