Index · Правила · Поиск· Группы · Регистрация · Личные сообщения· Вход

Список разделов Нужна помощь
 
 
 

Раздел: Нужна помощь Программисты!!! ПОМОГИТЕ ДОДЕЛАТЬ ПРОГУ! 

Создана: 23 Ноября 2006 Чтв 22:38:28.
Раздел: "Нужна помощь"
Сообщений в теме: 10, просмотров: 2039

  1. Toptijka


    Частый гость


    Более 10 лет на форумеМуж.
    23 Ноября 2006 Чтв 22:38:28
    Вот задание:
    Дана последовательность, содержащая от 1 до 30 слов, в каждом из которых от 1 до 5 строчных латинских букв; между соседними словами – запятая, за последним словом точка. Напечатать все слова в алфавитном порядке разделенные пробелами без запятых.

    Вот то, что я написал, все работет, только нужно упорядочить слова не только по первой букве!
    Т.е.
    Вводим: abc,aab,aaa.
    Должно вывести: aaa aab abc
    Помогите дописать эту сортировку!
    Вот исходник:

    Код#include "stdafx.h"
    #include <iostream>
    #include <cstdlib>
    #include <cstdio>
    using std::endl;
    using std::cout;
    using std::cin;

    int main( )
    {
    char str[181], *word[30], *temp;
    long Counter = 0, CharCounter = 0, WordCounter = 0;
    cout << "Enter string:";
    /* get string */
    cin.getline( str, 181 );

    /* if not tour then exit */
    if( !strstr( str, "." ) )
    return 0;

    /* counter word and counter symbol's in word */
    while( str[Counter] != '.' )
    {
    if( str[Counter] >= 'a' && str[Counter] <= 'z' ) /* islower( str[Counter] ) - can his use */
    {
    ++CharCounter;
    if( CharCounter > 5 )
    return 0;
    } else if( str[Counter] == ',' )
    {
    ++WordCounter;
    if( WordCounter > 30 )
    return 0;
    CharCounter = 0;
    } else
    {
    return 0;
    }
    ++Counter;
    }
    str[Counter] = 0;
    Counter = 0;


    /* get word */
    word[Counter] = strtok( str, "," );
    while( word[Counter] != 0 )
    {
    ++Counter;
    word[Counter] = strtok( 0, "," );
    }

    /* bouble sort */
    for( int i=0;i<Counter-1;i++ )
    for( int j=0;j<Counter-1;j++ )
    {
    if( *word[j] > *word[j+1] )
    {
    temp = word[j];
    word[j] = word[j+1];
    word[j+1] = temp;
    }
    }
    /* output string */
    for( int i=0;i<Counter;i++ )
    cout << word[i] << ' ';
    cout << endl;
    cin.get();
    return 0;
    }
  2. 23 Ноября 2006 Чтв 23:20:23
    не навижу си :))) а так пог бы, да не знаю как :)

    -> а ты не пробывал дать это где ни будь, там где это ну жуть как надоело всем, на том же форуме прогеров :)

    сейчас скопирую твой запрос и кину туда, гдя и иногда бываю :)

    \ тут либой мотёрый прогер отпинает меня :) \
  3. Toptijka


    Частый гость


    Более 10 лет на форумеМуж.
    24 Ноября 2006 Птн 17:13:45
    Vector писал :не навижу си :))) а так пог бы, да не знаю как :)

    -> а ты не пробывал дать это где ни будь, там где это ну жуть как надоело всем, на том же форуме прогеров :)

    сейчас скопирую твой запрос и кину туда, гдя и иногда бываю :)

    \ тут либой мотёрый прогер отпинает меня :) \


    Огромное СПАСИБО, МУЖИК! Я знал, что здесь мне всегда помогут! Я уже просил помочь на одном форуме прогеров, да там даже никто не ответил, Мудачье! Я уже сам доделал прогу, но все равно спасибо... Very Happy
  4. Bodya


    Завсегдатай


    Более 10 лет на форумеМуж.
    24 Ноября 2006 Птн 18:18:24
    Toptijka писал :Я уже просил помочь на одном форуме прогеров, да там даже никто не ответил, Мудачье!

    А зачем кому-то бесплатно тратить свое время на твою лабораторную работу?
  5. Noom


    Активист


    Более 7 лет на форумеМуж.
    24 Ноября 2006 Птн 18:35:48
    Почитай про locale. Судя по заданиям - ОмГТУ, 5 курс, "Технология программирования"?
    И разбей программу на действия: ввод двух строк, выполнение действий.
    Твоя программа ограничивает ввод, а с чего бы это? В ТЗ строка не ограничена.
  6. Toptijka


    Частый гость


    Более 10 лет на форумеМуж.
    24 Ноября 2006 Птн 19:51:17
    [quote="Bodya"]
    Toptijka писал :Я уже просил помочь на одном форуме прогеров, да там даже никто не ответил, Мудачье!

    А зачем кому-то бесплатно тратить свое время на твою лабораторную работу?

    Ты один из них!!
  7. 24 Ноября 2006 Птн 20:35:38
    Привет.

    Вектрировать могу, но я уже всё сказал - ищи там где я иногда бываю \выделять не буду кто лучще кто хуже, просто там был и буду\

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

    ОТВЕТЫ ->>

    1)
    Может не стоило так извращаться?

    #inсludе <set>
    #inсludе <string>
    #inсludе <iostream>
    #inсludе <algorithm>

    int main(void)
    {
    std::string str;
    std::set<std::string> strs;
    char ch;

    while(std::cin.get(ch) && ch != '.') {
    if (',' == ch) {
    strs.insert(str);
    str.clear();
    }
    else str.push_back(ch);
    }
    if (!str.empty()) strs.insert(str);

    std::copy(strs.begin(), strs.end(), std::ostream_iterator<std::string>(std::cout, " "));
    }

    2)
    Лениво писать текст программы :(
    Могу только советы раздать
    1. Можно просто написать using namespace std и не мучиться каждый раз для потока писать std.
    2. Я бы просто использовал массив строк char word[30][5], т.е. 30 строк по пять символов, ваще не знаю как у тебя паботает, просто объявил 30 указателей, должно глючить :).
    3. Ну а сравнивать строки можно двумя способами: простой strcmp наверно неподходит, второй вариант просто перебирать символы
    int cmp(char *str1, char * str2){
    int i;
    for(i = 0; i <= 4, str1[i] != stt2[i]; i++);
    if(str1[i] == stt2[i]) return 0;
    if(str1[i] < stt2[i]) return -1;
    return 1;
    }

    3)
    Малень обшибся, правильно вот так
    for(i = 0; i <= 3, str1[i] != stt2[i]; i++)

    Видимо с утра я еще не проснулся :)
    Правильный вариант
    int cmp(char *str1, char * str2){
    int i;
    for(i = 0; i <= 3, str1[i] == stt2[i]; i++);
    if(str1[i] == stt2[i]) return 0;
    if(str1[i] < stt2[i]) return -1;
    return 1;
    }

    :) всё просто до безобразия :)
    Агент Vector - чем смог помог.
    \прости\
  8. 25 Ноября 2006 Суб 21:22:39
    ну что? тишина. во те ещё :)
    ***
    Как вариант:
    #inсludе <iostream>
    #inсludе <string>
    #inсludе <algorithm>
    #inсludе <functional>
    #inсludе <vector>
    #inсludе <boost/tokenizer.hpp>
    int _tmain(int argc, _TCHAR* argv[])
    {
    std::string str;
    char ch;
    while (std::cin.get(ch) && ch != '.') str += ch;
    boost::tokenizer<> tok(str);
    std::vector<std::string> words(tok.begin(), tok.end());
    std::sort(words.begin(), words.end(), std::less<std::string>( ) );
    std::copy(words.begin(), words.end(), std::ostream_iterator<std::string>(std::cout, " "));
    return 0;
    }
    ***
    :))) ржут те кто всё знает :)))
  9. Toptijka


    Частый гость


    Более 10 лет на форумеМуж.
    26 Ноября 2006 Вск 15:55:51
    Vector писал :ну что? тишина. во те ещё :)
    ***
    Как вариант:
    #inсludе <iostream>
    #inсludе <string>
    #inсludе <algorithm>
    #inсludе <functional>
    #inсludе <vector>
    #inсludе <boost/tokenizer.hpp>
    int _tmain(int argc, _TCHAR* argv[])
    {
    std::string str;
    char ch;
    while (std::cin.get(ch) && ch != '.') str += ch;
    boost::tokenizer<> tok(str);
    std::vector<std::string> words(tok.begin(), tok.end());
    std::sort(words.begin(), words.end(), std::less<std::string>( ) );
    std::copy(words.begin(), words.end(), std::ostream_iterator<std::string>(std::cout, " "));
    return 0;
    }
    ***
    :))) ржут те кто всё знает :)))


    Еще раз тебе СПАСИБО!!!! Побольше бы таких людей!
  10. 26 Ноября 2006 Вск 23:15:27
    Привет Топтыжка Хех! \там где я иногда бываю (да на кубани это :))) на сатике у мня всё вылажено, честно там луче по этому шарить, но это не важно? мне не трудно туда-сюда переправлять да и самому, что то 1*познавать\
    поступила одна информация
    -> приверим :) если фуфло подкидаваешь, то 2*пробел сломаю :)))) Спасибо.
    - Да не за что. Правда, тебе понадобится библиотека boost Хех!.
    -> а что этот boost редкость? и скока это тодда весит конечно можно найти, ну раз уж ты вазвался то ГОВАРИ!!! :)
    - Весит метров 10. Но его еще нужно будет скомпилить, а скомпиленный он весит больше гига. Проще воспользоваться вариантом который был до этого, если нет буста.
    -> понятно, что только у меня нет :) надо поискать ну не найду тогда в госте приеду :))) спасибо

    -=-=-=-=-=-=-=-=-=-=-
    1*познаватьпоеснение
    C++ так и не познал, но так хотел, просто интересно и так для "сэба" пару "букв" изучал на (bas, pas,) - как Doc ver (басика я впервые на Z80 увидал :)))) так и объектно орентир (VisualБарсик & Дельфин), ПШП, Ява (только мне почему то хочетс назавать Джава :))) и один знакомай так же, а все остальные - ЯВА! ЯЯЯ-В-ААА!!! ВИТЁЁЁК!!! ЯЯВВАА!!! ... джава бе-бе-бе *и бежать :)))*, но сейчас уже стал привыкать Хех!, фортран видел (как увидел у знакомой так больше и не видел ) года 4 назад примерно, ну и конечно asm - это самоя великая штука!!!. Не мои слова >>> [/i]Всё меняется, языки появляются и пропадают, а ассемблер не кто не отменял и не отменят :) Си так же видел, стандартное -> "Hello Word!" и всё :) Но всё это пустота ведь сам то я болда :)
    Так что удачи!!!


    2*пробел сломаю (он шутку понял, так как видел это)
    (copy)
    Чайник: - Яжеговарилпробелнеработает!!! -(
    Программист: Пиши_через_подчеркивание.
    Программист 1С: ГлавноеЧтоБыШифтРаботал!"
    Программист Delphi: Не.Шифт.А.Точка!
    Программист С++: Ламеры->Млин->Всему->Учить->Надо!
    Линуксоид: да<tab>уж<tab>ну<tab>у<tab>вас<tab>и<tab>проблемы
    Программист Lisp: (да(эт(вообще)старая(тема)))
    Прохраммист Х++: doInsertSpase(Яжеговарилпробелнеработает!!! -(,Я,же,говарил,пробел,не,работает!!! -();
    .
    Пополните?

    $$Наверное$так$на$PHP$будет

    VB&наверное&будет&так

    Насчет С++ не согласен!!! Глупо будет выглядеть код, если оборачивать пробелами оператор "->"
    —-
    Боюсь предположить, что получится на ASM при отсутствии пробела ))

    на C/C++ :)
    "пробел\x20не\x20работет"

    <phrase><word>Нынче</word><word>другие</word><word>тенденции</word></phrase>

    ....

    КрУТымПАрНЯмпрОбеЛНенУЖен!!! Смайлик :-)

    ВотПРОБЕЛтакПРОБЕЛнадоПРОБЕЛ:)
    ...

    V -> :) ДаДаАвотМнеЗаЭтоГдеТоПредупреждение:)яЯчтоИправдуНаписатьНеЛьзя:)))

    \Удачи/