Важная информация
Показано с 1 по 2 из 2

Тема: Переставить слова в строке в порядке возрастания цифр

  1. #1 Переставить слова в строке в порядке возрастания цифр 
    Новичок
    Регистрация
    26.05.2011
    Сообщений
    7
    Сказал(а) спасибо
    0
    Поблагодарили 0 раз(а) в 0 сообщениях
    Помогите пожалуйста решить задачу.
    Условие: задана строка, содержащая буквы и цифры. переставить слова в порядке возрастания цифр, содержащихся в словах.
    Ответить с цитированием  
     

  2. #2  
    Гуру Аватар для Абадябер
    Регистрация
    09.12.2010
    Адрес
    Беларусь, Минск
    Сообщений
    1,219
    Сказал(а) спасибо
    302
    Поблагодарили 176 раз(а) в 144 сообщениях
    Записей в блоге
    5
    Разумеется, программа составлена не идеально - я не сильно заботился о какой либо оптимизации, когда ее составлял. Но в целом, это и не так критично.
    Не было сказано - чем должны разделяться слова - поэтому я принял за разделяющий символ любой символ, отличающийся от буквы и цифры.
    Если программа находит слово, в котором раздельно стоит несколько цифр - то воспринимается лишь первая.
    Программа склеивает результирующую строку, используя в качестве разделителя пробелы, не зависимо от того, чем слова разделялись до сортировки. Если это критично, могу поправить - однако в принципе это не важно, т.к главное задание выполнено, а про разделители ничего сказано не было. Программку проверил - работает.

    Код qbasic:
    [Ссылки могут видеть только зарегистрированные пользователи. ] FUNCTION ExtractNum% (Tex$)
    [Ссылки могут видеть только зарегистрированные пользователи. ] SUB SkipSpaces (Tex$, I [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ])
    [Ссылки могут видеть только зарегистрированные пользователи. ] FUNCTION GetWord$ (Tex$, I [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ])
    [Ссылки могут видеть только зарегистрированные пользователи. ] Tex$, ResTex$, I [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ], RWC [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ]
    [Ссылки могут видеть только зарегистрированные пользователи. ] WordCount = 50
    [Ссылки могут видеть только зарегистрированные пользователи. ] Strs(WordCount) [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ], StrN(WordCount) [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ], SI [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ]
    [Ссылки могут видеть только зарегистрированные пользователи. ]
    [Ссылки могут видеть только зарегистрированные пользователи. ] "Input string: ", Tex$
     
    SI = 1: I = 1: RWC = 0
    DO
        Strs(SI) = GetWord$(Tex$, I)
        IF Strs(SI) = "" THEN
            [Ссылки могут видеть только зарегистрированные пользователи. ] DO
        ELSE
            StrN(SI) = ExtractNum(Strs(SI))
            SI = SI + 1: RWC = RWC + 1
        [Ссылки могут видеть только зарегистрированные пользователи. ] IF
    LOOP
     
    IF RWC > 1 THEN
        [Ссылки могут видеть только зарегистрированные пользователи. ] J, K, X [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ]
        FOR SI = 1 TO RWC
            K = SI: X = StrN(SI): Tex$ = Strs(SI)
            FOR J = SI + 1 TO RWC
                IF StrN(J) < X THEN
                    K = J: X = StrN(J): Tex$ = Strs(J)
                [Ссылки могут видеть только зарегистрированные пользователи. ] IF
            NEXT J
            StrN(K) = StrN(SI): Strs(K) = Strs(SI):
            StrN(SI) = X: Strs(SI) = Tex$
        NEXT SI
    [Ссылки могут видеть только зарегистрированные пользователи. ] IF
     
    ResTex$ = ""
    FOR SI = 1 TO RWC
        ResTex$ = ResTex$ + Strs(SI) + " "
    NEXT SI
    [Ссылки могут видеть только зарегистрированные пользователи. ] ResTex$
     
    FUNCTION ExtractNum% (Tex$)
        [Ссылки могут видеть только зарегистрированные пользователи. ] I [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ], From [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ]
        FOR I = 1 TO [Ссылки могут видеть только зарегистрированные пользователи. ](Tex$)
            IF [Ссылки могут видеть только зарегистрированные пользователи. ](Tex$, I, 1) >= "0" [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ](Tex$, I, 1) <= "9" THEN [Ссылки могут видеть только зарегистрированные пользователи. ] FOR
        NEXT I
        From = I
        IF [Ссылки могут видеть только зарегистрированные пользователи. ](Tex$, I, 1) < "0" [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ](Tex$, I, 1) > "9" THEN
            ExtractNum% = 0
            [Ссылки могут видеть только зарегистрированные пользователи. ] FUNCTION
        [Ссылки могут видеть только зарегистрированные пользователи. ] IF
        FOR I = I TO [Ссылки могут видеть только зарегистрированные пользователи. ](Tex$)
            IF [Ссылки могут видеть только зарегистрированные пользователи. ](Tex$, I, 1) < "0" [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ](Tex$, I, 1) > "9" THEN [Ссылки могут видеть только зарегистрированные пользователи. ] FOR
        NEXT I
        ExtractNum% = [Ссылки могут видеть только зарегистрированные пользователи. ]([Ссылки могут видеть только зарегистрированные пользователи. ](Tex$, From, I - From))
    [Ссылки могут видеть только зарегистрированные пользователи. ] FUNCTION
     
    FUNCTION GetWord$ (Tex$, I [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ])
        [Ссылки могут видеть только зарегистрированные пользователи. ] From [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ]
        IF I = [Ссылки могут видеть только зарегистрированные пользователи. ](Tex$) THEN
            GetWord$ = ""
            [Ссылки могут видеть только зарегистрированные пользователи. ] FUNCTION
        [Ссылки могут видеть только зарегистрированные пользователи. ] IF
        CALL SkipSpaces(Tex$, I)
        From = I
        DO WHILE I <= [Ссылки могут видеть только зарегистрированные пользователи. ](Tex$)
            SELECT CASE [Ссылки могут видеть только зарегистрированные пользователи. ](Tex$, I, 1)
                CASE "A" TO "Z", "a" TO "z", "0" TO "9", "А" TO "Я", "а" TO "я"
                    I = I + 1
                CASE ELSE
                    [Ссылки могут видеть только зарегистрированные пользователи. ] DO
            [Ссылки могут видеть только зарегистрированные пользователи. ] SELECT
        LOOP
        GetWord$ = [Ссылки могут видеть только зарегистрированные пользователи. ](Tex$, From, I - From)
    [Ссылки могут видеть только зарегистрированные пользователи. ] FUNCTION
     
    SUB SkipSpaces (Tex$, I [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ])
    DO WHILE I <= [Ссылки могут видеть только зарегистрированные пользователи. ](Tex$)
        SELECT CASE [Ссылки могут видеть только зарегистрированные пользователи. ](Tex$, I, 1)
            CASE "A" TO "Z", "a" TO "z", "0" TO "9", "А" TO "Я", "а" TO "я"
                [Ссылки могут видеть только зарегистрированные пользователи. ] DO
            CASE ELSE
                I = I + 1
        [Ссылки могут видеть только зарегистрированные пользователи. ] SELECT
    LOOP
    [Ссылки могут видеть только зарегистрированные пользователи. ] SUB
    Дружба-магия-радость!
    Ответить с цитированием  
     

Информация о теме
Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 10
    Последнее сообщение: 02.12.2011, 19:05
  2. Ответов: 7
    Последнее сообщение: 28.04.2011, 00:14
  3. Ответов: 3
    Последнее сообщение: 22.04.2011, 00:15
  4. Сумма цифр числа
    от andrey198181 в разделе QBasic
    Ответов: 20
    Последнее сообщение: 24.12.2010, 23:49
  5. Ответов: 2
    Последнее сообщение: 09.12.2010, 17:24
Ваши права
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •