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

Найти в функции в строке слово максимальной длины - C++

Восстановить пароль Регистрация
 
Vonka
 Аватар для Vonka
1 / 1 / 0
Регистрация: 13.09.2013
Сообщений: 90
12.12.2013, 22:28     Найти в функции в строке слово максимальной длины #1
Ввести строку. Найти в функции в ней слово максимальной длины.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2013, 22:28     Найти в функции в строке слово максимальной длины
Посмотрите здесь:

C++ Слово максимальной длины заменить на слово минимальной длины
В строке, состоящей из слов и знаков препинания(пробел.:,!?-;),найти слово максимальной длины, не содержащее заданную букву C++
В параметрах командной строки передается список слов. Определить и вывести на экран слово максимальной длины. C++
C++ Найти порядковый номер слова максимальной длины в строке и номер позиции, с которой оно начинается
C++ Поменять местами слово максимальной и минимальной длины.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
12.12.2013, 22:37     Найти в функции в строке слово максимальной длины #2
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
29
30
31
32
33
34
#include <iostream>
#include <string>
 
std::string maximalLengthWord(std::string userString);
 
int main()
{
    std::string userString;
    std::cout << "Input the string: " << std::endl;
    std::getline(std::cin, userString);
    std::cout << "The word with maximal length: " << maximalLengthWord(userString) << std::endl;
    std::cout << "It's length: " << maximalLengthWord(userString).length() << std::endl;
 
    std::system("pause");
    return 0;
}
 
std::string maximalLengthWord(std::string userString)
{
    const char *delimeters("!?., ");
    char *buffer(0);
    char *currentWord(strtok_s(const_cast <char *> (userString.c_str()), delimeters, &buffer));
    
    std::string resultWord;
    size_t maximalLength(0);
    while (currentWord) {
        if (strlen(currentWord) > maximalLength) {
            maximalLength = strlen(currentWord);
            resultWord = currentWord;
        }
        currentWord = strtok_s(0, delimeters, &buffer);
    }
    return resultWord;
}
Doksim
 Аватар для Doksim
57 / 57 / 8
Регистрация: 08.12.2013
Сообщений: 257
12.12.2013, 22:38     Найти в функции в строке слово максимальной длины #3
если слова разделены пробелами то...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
 
int main()
{
    int max = 0, a;
    char str[ 100 ];
    cin.getline( str, 100 );
    
    for( int i = 0; i < strlen( str ); i++ )
    {
         a = 0;
         for( int j = i; str[ j ] != ' ' && str[ j ] != '\0'; j++ )a++;
         
         if( a > max )max = a;  
    }
    
    cout << max << endl;
    return system( "pause" );
}
Vonka
 Аватар для Vonka
1 / 1 / 0
Регистрация: 13.09.2013
Сообщений: 90
12.12.2013, 22:42  [ТС]     Найти в функции в строке слово максимальной длины #4
Цитата Сообщение от Doksim Посмотреть сообщение
если слова разделены пробелами то...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
 
int main()
{
    int max = 0, a;
    char str[ 100 ];
    cin.getline( str, 100 );
    
    for( int i = 0; i < strlen( str ); i++ )
    {
         a = 0;
         for( int j = i; str[ j ] != ' ' && str[ j ] != '\0'; j++ )a++;
         
         if( a > max )max = a;  
    }
    
    cout << max << endl;
    return system( "pause" );
}
оно выводит количество букв? а что добавить что бы выводило это слово?
Doksim
 Аватар для Doksim
57 / 57 / 8
Регистрация: 08.12.2013
Сообщений: 257
12.12.2013, 22:49     Найти в функции в строке слово максимальной длины #5
Цитата Сообщение от Vonka Посмотреть сообщение
оно выводит количество букв? а что добавить что бы выводило это слово?
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
29
30
#include <iostream>
using namespace std;
 
int main()
{
    int max = 0, a;
    char str[ 100 ], s[ 100 ], smax[ 100 ];
    cin.getline( str, 100 );
    
    for( int i = 0; i < strlen( str ); i++ )
    {
         a = 0;
         strcpy( s, "" );
         for( int j = i, k = 0; str[ j ] != ' ' && str[ j ] != '\0'; j++, k++ )
         {
              a++;
              s[ k ] = str[ j ];
         }
         s[ a ] = '\0';
         
         if( a > max )
         {
             max = a;  
             strcpy( smax, s );
         }
    }
    
    cout << "Max word is: " << smax << "\nHis length is: " << max << endl;
    return system( "pause" );
}
Vonka
 Аватар для Vonka
1 / 1 / 0
Регистрация: 13.09.2013
Сообщений: 90
12.12.2013, 22:54  [ТС]     Найти в функции в строке слово максимальной длины #6
Цитата Сообщение от Doksim Посмотреть сообщение
char str[ 100 ], s[ 100 ], smax[ 100 ];
* * cin.getline( str, 100 );
а что вот это за строчки?

Ev[G]eN, никак не могу понять, помоги пожалуйста разобраться как она у тебя работает?

"Найти в функции в ней слово максимальной длины" Я так понял должна присутствовать функция?
Doksim
 Аватар для Doksim
57 / 57 / 8
Регистрация: 08.12.2013
Сообщений: 257
12.12.2013, 22:58     Найти в функции в строке слово максимальной длины #7
Цитата Сообщение от Vonka Посмотреть сообщение
а что вот это за строчки?

Ev[G]eN, никак не могу понять, помоги пожалуйста разобраться как она у тебя работает?

"Найти в функции в ней слово максимальной длины" Я так понял должна присутствовать функция?
у него достаточно все сложно, лучше вникни в мой код.

Добавлено через 1 минуту
Цитата Сообщение от Vonka Посмотреть сообщение
а что вот это за строчки?
обьявление дополнительных переменных и считывание самой строки.
Ev[G]eN
12.12.2013, 23:02
  #8

Не по теме:

Не по теме:

Цитата Сообщение от Doksim Посмотреть сообщение
у него достаточно все сложно, лучше вникни в мой код.
действительно. так можно вечно стоять на месте и вникать только в простое.

Doksim
 Аватар для Doksim
57 / 57 / 8
Регистрация: 08.12.2013
Сообщений: 257
12.12.2013, 23:07     Найти в функции в строке слово максимальной длины #9
Цитата Сообщение от Ev[G]eN Посмотреть сообщение
действительно. так можно вечно стоять на месте и вникать только в простое.
Новичкам легче понимать более простой код.
Vonka
 Аватар для Vonka
1 / 1 / 0
Регистрация: 13.09.2013
Сообщений: 90
12.12.2013, 23:08  [ТС]     Найти в функции в строке слово максимальной длины #10
Doksim, еще хотел спросить, как засунуть всю задачу в функцию, так что бы вызвать ее с помощью меню?
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
12.12.2013, 23:09     Найти в функции в строке слово максимальной длины #11
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
std::string maximalLengthWord(std::string userString)
//функция нахождения слова максимальной длины, в строке userString
{
    const char *delimeters("!?., "); //символы разделители, которыми могут быть разделены слова в строке
    char *buffer(0); //временная переменная
 
    //strtok_s - функция, которая разделяет строку userString на части до символов-разделителей delimeters
    char *currentWord(strtok_s(const_cast <char *> (userString.c_str()), delimeters, &buffer));
    //грубо говоря, в currentWord записывается первое слово из строки
 
    std::string resultWord; //переменная, в которую запишется самое длинное слово
    size_t maximalLength(0); //переменная, для определения максимальной длины слова
    while (currentWord) { //..пока в строке еще есть слова
        if (strlen(currentWord) > maximalLength) {//проверяем, больше ли длина текущего слова, чем предыдущего
            maximalLength = strlen(currentWord);//если да, то записываем его длину в maximalLength
            resultWord = currentWord;//и текущее слово в resultWord
        }
        currentWord = strtok_s(0, delimeters, &buffer); //продолжаем делить строку на слова
    }
    return resultWord; //возврат результата
}
Doksim
 Аватар для Doksim
57 / 57 / 8
Регистрация: 08.12.2013
Сообщений: 257
12.12.2013, 23:17     Найти в функции в строке слово максимальной длины #12
Цитата Сообщение от Vonka Посмотреть сообщение
Doksim, еще хотел спросить, как засунуть всю задачу в функцию, так что бы вызвать ее с помощью меню?
чот, не очень выходит, в идеале переменная смакс должна возвращаться ф-ией, но у меня так не получается.

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
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream>
using namespace std;    
    
char smax[ 100 ]; 
    
void f( char str[] )    
{
    int max = 0, a;
    char s[ 100 ];
    
    for( int i = 0; i < strlen( str ); i++ )
    {
         a = 0;
         strcpy( s, "" );
         for( int j = i, k = 0; str[ j ] != ' ' && str[ j ] != '\0'; j++, k++ )
         {
              a++;
              s[ k ] = str[ j ];
         }
         s[ a ] = '\0';
         
         if( a > max )
         {
             max = a;  
             strcpy( smax, s );
         }
    }
    
}
 
 
int main()
{
    char str[ 100 ];
    cin.getline( str, 100 );
    
    f( str );
    cout << smax;
    return system( "pause" );
}
Добавлено через 53 секунды
Ev[G]eN, может вы покажете как из моего кода ф-ию сделать?
Vonka
 Аватар для Vonka
1 / 1 / 0
Регистрация: 13.09.2013
Сообщений: 90
12.12.2013, 23:21  [ТС]     Найти в функции в строке слово максимальной длины #13
Цитата Сообщение от Doksim Посмотреть сообщение
чот, не очень выходит, в идеале переменная смакс должна возвращаться ф-ией, но у меня так не получается.
мне просто надо засунуть две задачи в одно меню используя функции, но что-то я не совсем понимаю как.
Doksim
 Аватар для Doksim
57 / 57 / 8
Регистрация: 08.12.2013
Сообщений: 257
12.12.2013, 23:30     Найти в функции в строке слово максимальной длины #14
Цитата Сообщение от Vonka Посмотреть сообщение
мне просто надо засунуть две задачи в одно меню используя функции, но что-то я не совсем понимаю как.
программируете в с++билдер?
Vonka
 Аватар для Vonka
1 / 1 / 0
Регистрация: 13.09.2013
Сообщений: 90
12.12.2013, 23:38  [ТС]     Найти в функции в строке слово максимальной длины #15
Цитата Сообщение от Doksim Посмотреть сообщение
программируете в с++билдер?
Microsoft Visual Studio 2010
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.12.2013, 23:39     Найти в функции в строке слово максимальной длины
Еще ссылки по теме:

C++ В строке, состоящей из слов и знаков препинания (пробел . : , ! ?-;), найти слово максимальной длины
Ввести строку. Найти в функции в ней слово максимальной длины C++
В строке, состоящей из слов и знаков препинания, найти слово максимальной длины C++

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

Или воспользуйтесь поиском по форуму:
Doksim
 Аватар для Doksim
57 / 57 / 8
Регистрация: 08.12.2013
Сообщений: 257
12.12.2013, 23:39     Найти в функции в строке слово максимальной длины #16
Цитата Сообщение от Vonka Посмотреть сообщение
Microsoft Visual Studio 2010
ладно, создайте отдельную тему и вам помогут.
Yandex
Объявления
12.12.2013, 23:39     Найти в функции в строке слово максимальной длины
Ответ Создать тему
Опции темы

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