1. Акция на весь декабрь! Получай оплату х2 за уникальные статьи, объемом от 200 слов, если в заголовке темы и теле статьи присутствует слово Python
    Скрыть объявление

Задача: Строки. Выделение слов из строки и их сортировка

Тема в разделе "C/C++/C#", создана пользователем -, 29 ноя 2010.

  1. Гость

    Помогите ДОРЕШАТЬ задачу пожалуйста.

    Задача:Дана строка, состоящая из слов на английском языке, разделенных пробелами. Вывести на экран эти слова в порядке алфавита.


    Вот код.Помогите сделать чтобы слова выводились в порядке алфавита.

    Код (C++):
    #include <vcl.h>
    #include <string.h>
    #include <stdio.h>
    #pragma hdrstop

    //---------------------------------------------------------------------------

    #pragma argsused
    int main(int argc, char* argv[])
    {
    char st[100], sl[100];
    int k = 0, i;
    puts ("Vvedie stroku");
    gets (st);
    strcat (st," ");
    puts ("Slova: ");
    int n = strlen(st);
    if (n < 2) return 1;
    sl[0] = '\0';
    for (i=0; i<n; i++)
    if (st[i] != ' ')
    {
    sl[k] = st[i];
    sl[k+1] = '\0';
    k++;
    }
    else
    {
    if (strlen (sl) > 0) puts (sl);
    sl[0] = '\0';
    k = 0;                     
    }
    system("pause");
    return 0;
    }
    //---------------------------------------------------------------------------
     
  2. BashOrgRu

    BashOrgRu Well-Known Member

    Регистрация:
    15 мар 2009
    Сообщения:
    78
    Симпатии:
    0
    Вот код на паскале, который можно подредактировать и перевести в С и получится решение ваше задачи.

    Код (Delphi):
    { **** UBPFD *********** by kladovka.net.ru ****
    >> Сортировка строк с украинскими символами

    Принцип работы функции такой же как и у стандартной функции CompareText из SysUtils. Поскольку для украинских символов строки сортируются этой функцией \"как попало\", то я решил написать свой CompareUkrText.

    Зависимости: System
    Автор:   Алексей Глеб, noodlesf@mail.ru, Чернигов
    Copyright:  Собственное написание (Алексей Глеб)
    Дата:       1 февраля 2003 г.
    ********************************************** }


    Unit UkrSort;  

    Interface  

    Function CompareUkrText(S1, S2: String): integer;  

    //массив, который заменит ASCI таблицу  
    Var  
    Chars: Array[1..136] Of char=  
    (\'1\',\'2\',\'3\',\'4\',\'5\',\'6\',\'7\',\'8\',\'9\',\'0\',\'A\',\'B\',\'C\',\'D\',\'E\',\'F\',\'G\',  
    \'H\',\'I\',\'J\',\'K\',\'L\',\'M\',\'N\',\'O\',\'P\',\'Q\',\'R\',\'S\',\'T\',\'U\',\'V\',\'W\',\'X\',  
    \'Y\',\'Z\',\'a\',\'b\',\'c\',\'d\',\'e\',\'f\',\'g\',\'h\',\'i\',\'j\',\'k\',\'l\',\'m\',\'n\',\'o\',  
    \'p\',\'q\',\'r\',\'s\',\'t\',\'u\',\'v\',\'w\',\'x\',\'y\',\'z\',\'А\',\'Б\',\'В\',\'Г\',\'Ґ\',\'Д\',  
    \'Е\',\'Ё\',\'Є\',\'Ж\',\'З\',\'И\',\'І\',\'Ї\',\'Й\',\'К\',\'Л\',\'М\',\'Н\',\'О\',\'П\',\'Р\',\'С\',  
    \'Т\',\'У\',\'Ф\',\'Х\',\'Ц\',\'Ч\',\'Ш\',\'Щ\',\'Ъ\',\'Ы\',\'Ь\',\'Э\',\'Ю\',\'Я\',\'а\',\'б\',\'в\',  
    \'г\',\'ґ\',\'д\',\'е\',\'ё\',\'є\',\'ж\',\'з\',\'и\',\'і\',\'ї\',\'й\',\'к\',\'л\',\'м\',\'н\',\'о\',  
    \'п\',\'р\',\'с\',\'т\',\'у\',\'ф\',\'х\',\'ц\',\'ч\',\'ш\',\'щ\',\'ъ\',\'ы\',\'ь\',\'э\',\'ю\',\'я\');  

    Implementation  

    //сама функция  
    Function CompareUkrText(S1, S2: String): integer;  

    Function GetNum(C: char): integer;  
    //динам. функция получения номера символа из нашего массива  
    Var  
    i: integer;  
    Begin  
    Result:=0;  
    For i:=1 To 136 Do  
    If Chars[i]=C Then  
    Begin  
    Result:=i;  
    exit;  
    End;  
    End;  

    Function CompCh(C1, C2: integer): integer;  
    //динам. функция определения \"что больше???\"  
    Begin  
    If C1=C2 Then Result:=0;  
    If C1>C2 Then Result:=1;  
    If C1<C2 Then Result:=-1;  
    End;  
    Var  
    i, xS1, xS2, CurrR: integer;  
    Begin //начало функции сортировки  
    Result:=0;  
    CurrR:=0; //временный результат  
    If S1<>S2 Then  
    Begin  
    //сканирование сток посимвольно  
    For i:=1 To Length(S1) Do  
    Begin  
    If Length(S2)>=i Then  
    Begin  
    xS1:=GetNum(S1[i]);  
    xS2:=GetNum(S2[i]);  
    If (xS1<>0)And(xS2<>0)And(xS1<>xS2) Then  
    CurrR:=CompCh(xS1, xS2)  
    Else  
    Begin  
    If (xS1=0)Or(xS2=0) Then  
    Begin  
    If xS2=0 Then CurrR:=1;  
    If xS1=0 Then CurrR:=-1;  
    End;  
    End;  
    If CurrR<>0 Then  
    Begin  
    Result:=CurrR;  
    Exit;  
    End;  
    End  
    Else  
    Begin  
    Result:=CurrR;  
    Exit;  
    End;  
    End;  
    End;  
    End;  

    End.
     
  3. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    2 Граг : Код перевел??? Получилось??? Актуальна ли тема?
     
Загрузка...
Похожие Темы - Задача Строки Выделение
  1. Shonny
    Ответов:
    0
    Просмотров:
    1.230
  2. Янчик
    Ответов:
    0
    Просмотров:
    469
  3. TrishaRay
    Ответов:
    1
    Просмотров:
    776
  4. elzim
    Ответов:
    0
    Просмотров:
    928
  5. ShaoKahn
    Ответов:
    0
    Просмотров:
    1.112

Поделиться этой страницей