Форум программистов, компьютерный форум CyberForum.ru

самое длинное слово - C++

Восстановить пароль Регистрация
 
Aaxenon
Light Knight
 Аватар для Aaxenon
106 / 29 / 3
Регистрация: 03.06.2010
Сообщений: 361
24.08.2010, 11:39     самое длинное слово #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
using namespace std;
int main()
{
    char line[255];
    int cur = 0, max = 0, index = 0, i;
    cin >> line;
    for(i = 0;; i++)
    {
        if(line[i] == ' ' || line[i] == '\0')
        {
            if(cur > max)
            {
                max = cur;
                index = i;
            }
            if(line[i] == '\0')
                break;
            cur = 0;
        }
        else
            cur++;
    }
    cout << max;
    system("PAUSE");
    return 0;
}
вот, собстно задача, найти и вывести самое длинное слово...но как то не складывается
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.08.2010, 11:39     самое длинное слово
Посмотрите здесь:

Поменять местами самое длинное слово и самое короткое слово в тексте C++
C++ Дан текст из нескольки строк, определить самое длинное и самое короткое слово
Найти самое длинное и самое короткое слово в предложении C++
Напечатать самое длинное и самое короткое слово в строке C++
C++ Строки. В заданном тексте найти самое длинное слово и самое длинное предложение.
Вывести самое длинное и самое короткое слово из строки C++
Найти самое длинное и самое короткое слово в тексте C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
24.08.2010, 11:45     самое длинное слово #2
используй string
cin >>
и maxlen
Aaxenon
Light Knight
 Аватар для Aaxenon
106 / 29 / 3
Регистрация: 03.06.2010
Сообщений: 361
24.08.2010, 11:47  [ТС]     самое длинное слово #3
а как maxlen использовать
.::.DIMA.::.
142 / 142 / 4
Регистрация: 26.10.2008
Сообщений: 782
24.08.2010, 11:52     самое длинное слово #4
Можно использовать strtok. Эта функция разобьёт предложение на слова. А выбрать самое длинное слово не представит труда (strlen).
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
24.08.2010, 11:52     самое длинное слово #5
Код
size_t maxlen = 0;

...

if (curr.length() > maxlen) {
    maxlen = curr.length();
    maxstr = curr;
}
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9382 / 5432 / 916
Регистрация: 25.07.2009
Сообщений: 10,428
24.08.2010, 11:56     самое длинное слово #6
RoY_Mu$T@nG, вот не нужно без крайней на то необходимости код С использовать в С++ программах - проблем больше!
С
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define DELIM " ,.!?;:\t\n"
 
int main(void){
    char buf[BUFSIZ], * pWrd, * pMax;
    
    printf("String: ");
    if ( ! fgets(buf, BUFSIZ, stdin) ){
        perror("fgets");
        exit(1);
    }
    
    if ( ( pMax = strtok(buf, DELIM) ) == NULL ){
        perror("strtok");
        exit(1);
    }
 
    while ( pWrd = strtok(NULL, DELIM) )
        if ( strlen(pWrd) > strlen(pMax) )
            pMax = pWrd;
    
    printf("Longest word: %s\n", pMax);
    
    exit(0);
}
С++
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <sstream>
#include <string>
 
int main(){
    std::string buf, maxWord = "";
    
    std::cout << "String: ";
    std::getline(std::cin, buf);
    std::istringstream ist(buf);
    while ( ist >> buf )
        if ( buf.size() > maxWord.size() )
            maxWord = buf;
    std::cout << "Longest word: " << maxWord << std::endl;
}
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
24.08.2010, 11:59     самое длинное слово #7
RoY_Mu$T@nG, ещё, слово можешь добывать отдельной функцией (на cpp сложно с разделителями)
Aaxenon
Light Knight
 Аватар для Aaxenon
106 / 29 / 3
Регистрация: 03.06.2010
Сообщений: 361
24.08.2010, 12:00  [ТС]     самое длинное слово #8
easybudda, понял, спасибо)) а нет какой нибудь базы, где упоминаются такие функции как
Код
istringstream
и подобное, ну и библиотеки соответственно..потому что большинство методов вижу первый раз)
Nameless One
Эксперт С++
 Аватар для Nameless One
5759 / 3408 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
24.08.2010, 12:06     самое длинное слово #9
RoY_Mu$T@nG, MSDN, сplusplus
Aaxenon
Light Knight
 Аватар для Aaxenon
106 / 29 / 3
Регистрация: 03.06.2010
Сообщений: 361
24.08.2010, 12:08  [ТС]     самое длинное слово #10
Nameless One, спасибо)
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9382 / 5432 / 916
Регистрация: 25.07.2009
Сообщений: 10,428
24.08.2010, 12:23     самое длинное слово #11
Цитата Сообщение от accept Посмотреть сообщение
на cpp сложно с разделителями
Тут на форуме предложили довольно простое решение (до сих пор стыдно, что сам не догадался)
C++
1
2
3
4
5
6
7
8
9
...
    const std::string DELIM = ".,!?;:";
...
    std::getline(std::cin, buf);
    for ( std::string::iterator i = buf.begin(); i != buf.end(); ++i )
        if ( DELIM.find(*i) != std::string::npos )
            *i = ' ';
    std::istringstream ist(buf);
...
Aaxenon
Light Knight
 Аватар для Aaxenon
106 / 29 / 3
Регистрация: 03.06.2010
Сообщений: 361
24.08.2010, 12:49  [ТС]     самое длинное слово #12
если бы еще что то понятно было))
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2295 / 1665 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
24.08.2010, 13:18     самое длинное слово #13
Цитата Сообщение от accept Посмотреть сообщение
на cpp сложно с разделителями
Зато в boost все хорошо:
C++
1
2
3
4
5
6
#include <boost/algorithm/string.hpp>
 
//...
std::vector<std::string> words;
boost::split(words, str, boost::is_any_of(".,!?;:"));
//...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.08.2010, 13:38     самое длинное слово
Еще ссылки по теме:

C++ В заданной строке определить самое длинное и самое короткое слово
C++ Найти в тексте самое длинное слово и самое длинное предложение
Найдите самое длинное, и самое короткое слово в заданном предложении C++
C++ Ввести строку, содержащую несколько слов. Определить самое длинное и самое короткое слово

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Nameless One
Эксперт С++
 Аватар для Nameless One
5759 / 3408 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
24.08.2010, 13:38     самое длинное слово #14
RoY_Mu$T@nG, у easybudd'ы заменяется каждый из встретившыхся символов-разделителей на пробел
Yandex
Объявления
24.08.2010, 13:38     самое длинное слово
Ответ Создать тему
Опции темы

Текущее время: 12:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru