Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/29: Рейтинг темы: голосов - 29, средняя оценка - 4.55
1 / 1 / 1
Регистрация: 13.09.2013
Сообщений: 90
1

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

12.12.2013, 22:28. Показов 5953. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ввести строку. Найти в функции в ней слово максимальной длины.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.12.2013, 22:28
Ответы с готовыми решениями:

Найти в строке слово-перевертыш максимальной длины
Дана строка в виде предложения. Найти в ней слово-перевертыш максимальной длинны. Словом будем...

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

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

Ввести строку. Найти в функции в ней слово максимальной длины
Как засунуть всю задачу в функцию, так что бы вызвать ее с помощью меню? Задача: Ввести строку....

15
Mobile Software Engineer
Эксперт С++
5381 / 1585 / 956
Регистрация: 23.01.2011
Сообщений: 3,214
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;
}
1
57 / 57 / 10
Регистрация: 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" );
}
2
1 / 1 / 1
Регистрация: 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" );
}
оно выводит количество букв? а что добавить что бы выводило это слово?
0
57 / 57 / 10
Регистрация: 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" );
}
2
1 / 1 / 1
Регистрация: 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, никак не могу понять, помоги пожалуйста разобраться как она у тебя работает?

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

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

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

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

Не по теме:

Не по теме:

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

1
57 / 57 / 10
Регистрация: 08.12.2013
Сообщений: 257
12.12.2013, 23:07 9
Цитата Сообщение от Ev[G]eN Посмотреть сообщение
действительно. так можно вечно стоять на месте и вникать только в простое.
Новичкам легче понимать более простой код.
1
1 / 1 / 1
Регистрация: 13.09.2013
Сообщений: 90
12.12.2013, 23:08  [ТС] 10
Doksim, еще хотел спросить, как засунуть всю задачу в функцию, так что бы вызвать ее с помощью меню?
0
Mobile Software Engineer
Эксперт С++
5381 / 1585 / 956
Регистрация: 23.01.2011
Сообщений: 3,214
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; //возврат результата
}
1
57 / 57 / 10
Регистрация: 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, может вы покажете как из моего кода ф-ию сделать?
2
1 / 1 / 1
Регистрация: 13.09.2013
Сообщений: 90
12.12.2013, 23:21  [ТС] 13
Цитата Сообщение от Doksim Посмотреть сообщение
чот, не очень выходит, в идеале переменная смакс должна возвращаться ф-ией, но у меня так не получается.
мне просто надо засунуть две задачи в одно меню используя функции, но что-то я не совсем понимаю как.
0
57 / 57 / 10
Регистрация: 08.12.2013
Сообщений: 257
12.12.2013, 23:30 14
Цитата Сообщение от Vonka Посмотреть сообщение
мне просто надо засунуть две задачи в одно меню используя функции, но что-то я не совсем понимаю как.
программируете в с++билдер?
1
1 / 1 / 1
Регистрация: 13.09.2013
Сообщений: 90
12.12.2013, 23:38  [ТС] 15
Цитата Сообщение от Doksim Посмотреть сообщение
программируете в с++билдер?
Microsoft Visual Studio 2010
0
57 / 57 / 10
Регистрация: 08.12.2013
Сообщений: 257
12.12.2013, 23:39 16
Цитата Сообщение от Vonka Посмотреть сообщение
Microsoft Visual Studio 2010
ладно, создайте отдельную тему и вам помогут.
1
12.12.2013, 23:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.12.2013, 23:39
Помогаю со студенческими работами здесь

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

Найти в строке подстроку максимальной длины
Найти в строке подстроку максимальной длины, состоящей из одного символа.

Слово максимальной длины заменить на слово минимальной длины
Задача: Создать 2 объекта разработанного класса. Одной из компонент класса является символьная...

В каждой строке найти слово минимальной длины
у меня дан код программы не могу его дописать на С задача такова даны строки в каждой строке...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru