Сортировка данных строки

Задача

Дана строка, состоящая из слов и чисел, отделенных друг от друга пробелами. Сформировать три строки, одна из которых содержит только целые числа, встречающиеся в исходной строке, вторая - только вещественные числа, а третья – оставшиеся слова.

Решение

 

Описание переменных: 

fullstr – заданная строка;
s – очередное первое слово в строке;
s_int, s_rl, s_str – строки целых чисел, вещественных чисел и слов соответственно;
int – очередное целое число;
rl – очередное вещественное число;
space – очередной пробел в заданной строке;
err – будет хранить 0, если очередное слово удается преобразовать в число.

Алгоритм решения задачи: 

{2} Избавляемся от пробелов в начале и конце строки, а также повторяющихся пробелов.

{3} Находим позицию первого пробела. Копируем первое слово. В зависимости от того, во что удалось преобразовать слово, добавляем его в соответствующую переменную. Удаляем это слово из исходной строки.

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

 

var
    fullstr,s,s_int,s_rl,s_str: string;
    int: integer;
    rl: real;
    space,err: integer;
begin
{1} writeln('String:');
    readln(fullstr);
 
{2} while fullstr[1] = ' ' do
        delete(fullstr,1,1);
    while fullstr[length(fullstr)] = ' ' do
        delete(fullstr,length(fullstr),1);
    while pos('  ',fullstr) <> 0 do
        delete(fullstr,pos('  ',fullstr),1);
 
{3} s_int := '';
    s_rl  := '';
    s_str := '';
    while fullstr <> '' do begin
        space := pos(' ',fullstr);
        if space = 0 then
            space := length(fullstr) + 1;
        s := copy(fullstr,1,space-1);
        val(s,int,err);
        if err = 0 then
            s_int := s_int + s + ' '
        else begin
            val(s,rl,err);
            if err = 0 then
                s_rl := s_rl + s + ' '
            else
                s_str := s_str + s + ' ';
        end;
        delete(fullstr,1,space);
    end;
 
{4} writeln('Integers: ',s_int);
    writeln('Real: ',s_rl);
    writeln('Words: ',s_str);
 
readln
end.

 

Тема

Строки

Уровень

Комбинированные задачи