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

Дана строка символов, состоящая из цифр и пробелов. Вывести на экран слово с максимальной длиной - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.67
spooky81
0 / 0 / 0
Регистрация: 11.05.2013
Сообщений: 16
11.05.2013, 21:51     Дана строка символов, состоящая из цифр и пробелов. Вывести на экран слово с максимальной длиной #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
28
29
30
31
32
33
34
35
#include <conio.h>
#include <stdio.h>
#include <string.h>
 
int main()
{
char dest[200];
clrscr();
printf("Vvedite stroku simvolov \n");
gets(dest);
 
char * buf = new char[strlen(dest)+1];
strcpy(buf, dest);
char * temp = strtok (buf, " ");  //âûäåëèòü ïåðâîå ñëîâî ñòðîêè
size_t max = strlen(temp); //ÏðèГ*ГїГІГј ГЅГІГ® ñëîâî Г§Г* ñëîâî Г± Г¬Г*ГЄГ±ГЁГ¬Г*ëüГ*îé äëèГ*îé
char * strmax = new char[max+1];
 
while (temp != NULL)    //âûäåëèòü ïîñëåäóþùåå ñëîâî ГЁ Г±Г°Г*ГўГ*ГЁГІГј ГЁГµ Г±Г® ñëîâîì max äëèГ*Г»
{
  printf("%s\n", temp);
  temp = strtok(NULL, " ");
  if (max < strlen(temp))
{
  delete []strmax;
  max = strlen(temp);
  strmax = new char[max+1];
  strcpy(strmax, temp);
}
}
printf("\nSamoe dlinnoe slovo - %s", strmax);
delete[]strmax;
delete[]buf;
getch();
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2013, 21:51     Дана строка символов, состоящая из цифр и пробелов. Вывести на экран слово с максимальной длиной
Посмотрите здесь:

Дана строка символов, состоящая из букв, цифр, запятых, точек, знаков «+» и «–». Выделить подстроку, которая соответствует записи вещественного числа C++
C++ Дана строка символов, состоящая из цифр, разделенных пробелами. Вывести четные числа этой строки- не работает
C++ Дана строка символов, состоящая из цифр, разделенных пробелами. Вывести четные числа этой строки
Дана строка символов, состоящая из букв и цифр. Удалить из строки все цифры C++
C++ Дана строка, состоящая из M попарно различных символов. Вывести все перестановки символов данной строки.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
11.05.2013, 22:13     Дана строка символов, состоящая из цифр и пробелов. Вывести на экран слово с максимальной длиной #2
spooky81,

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>
#include <string>
#include <sstream>
 
std::string max_word(std::string _str){
    std::string word, max;
    std::istringstream iss(_str);
 
    iss >> max;
    while(iss >> word){
        if(max.length() < word.length())
            max = word;
    }
 
    return max;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    std::string str("Hello bye morning programming night");
    //getline(std::cin, str);         или так для ввода пользователем строки
 
    std::cout << str << '\n';
    std::cout << max_word(str) << '\n';
 
    return 0;
}
spooky81
0 / 0 / 0
Регистрация: 11.05.2013
Сообщений: 16
11.05.2013, 22:16  [ТС]     Дана строка символов, состоящая из цифр и пробелов. Вывести на экран слово с максимальной длиной #3
Спасибо! Но нужно использовать строки С))
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
11.05.2013, 22:27     Дана строка символов, состоящая из цифр и пробелов. Вывести на экран слово с максимальной длиной #4
spooky81, все очень просто

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
while (temp != NULL)    //выделить последующее слово и сравнить их со словом max длины
    {
        printf("%s\n", temp);
        if (max < strlen(temp))
        {
            delete []strmax;
            max = strlen(temp);
            strmax = new char[max+1];
            strcpy(strmax, temp);
        }
 
        temp = strtok(NULL, " ");
    }
вот так вставьте)
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
11.05.2013, 22:30     Дана строка символов, состоящая из цифр и пробелов. Вывести на экран слово с максимальной длиной #5
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
#include <stdio.h>
#include <string.h>
 
int main()
{
    const int STR_LEN = 200;
    char dest[STR_LEN];
    printf("Vvedite stroku simvolov \n");
    fgets(dest, STR_LEN-1, stdin);
 
    char * buf = new char[strlen(dest)+1];
    strcpy(buf, dest);
    char * temp = strtok (buf, " \n\t");  //выделить первое слово строки
    size_t max = strlen(temp); //Принять это слово за слово с максимальной длиной
    char * strmax = new char[max+1];
    strcpy(strmax, temp);
 
    printf("%s\n", temp);
    const char* delim = " \n\t";
    temp = strtok(NULL, delim);
    while (temp != NULL)    //выделить последующее слово и сравнить их со словом max длины
    {
        printf("%s\n", temp);
        if (max < strlen(temp))
        {
            delete [] strmax;
            max = strlen(temp);
            strmax = new char[max+1];
            strcpy(strmax, temp);
        }
        temp = strtok(NULL, delim);
    }
    printf("\nSamoe dlinnoe slovo - %s\n", strmax);
    delete[]strmax;
    delete[]buf;
    return 0;
}
Используя stl будет по-проще:
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
#include <iostream>
#include <sstream>
#include <vector>
#include <string>
#include <iterator>
#include <algorithm>
 
bool cmp(const std::string& left, const std::string& right)
{
    return left.size() < right.size();
}
 
typedef std::istream_iterator<std::string> ii;
 
int main()
{
    std::string line;
 
    std::cout << "Put line: ";
    std::getline(std::cin, line);
 
    std::stringstream str(line);
    std::vector<std::string> v((ii(str)), ii());
    std::vector<std::string>::iterator iter = std::max_element(v.begin(), v.end(), cmp);
    std::cout << "Max word: " << *iter << std::endl;
}
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
11.05.2013, 22:37     Дана строка символов, состоящая из цифр и пробелов. Вывести на экран слово с максимальной длиной #6
xtorne21st,
Цитата Сообщение от spooky81 Посмотреть сообщение
Спасибо! Но нужно использовать строки С))
spooky81
0 / 0 / 0
Регистрация: 11.05.2013
Сообщений: 16
11.05.2013, 22:44  [ТС]     Дана строка символов, состоящая из цифр и пробелов. Вывести на экран слово с максимальной длиной #7
Большое спасибо! проблема еще в том, что если первое слово самое длинное - выводит мусор((
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
11.05.2013, 22:49     Дана строка символов, состоящая из цифр и пробелов. Вывести на экран слово с максимальной длиной #8
spooky81,

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
#include <conio.h>
#include <stdio.h>
#include <string.h>
 
int main()
{
    char dest[200];
    printf("Vvedite stroku simvolov \n");
    gets(dest);
 
    char * buf = new char[strlen(dest)+1];
    strcpy(buf, dest);
    char * temp = strtok (buf, " ");  //выделить первое слово строки
    size_t max = strlen(temp); //Принять это слово за слово с максимальной длиной
    char * strmax = new char[max+1];
    strcpy(strmax, temp);
 
    while (temp != NULL)    //выделить последующее слово и сравнить их со словом max длины
    {
        printf("%s\n", temp);
        if (max < strlen(temp))
        {
            delete []strmax;
            max = strlen(temp);
            strmax = new char[max+1];
            strcpy(strmax, temp);
        }
 
        temp = strtok(NULL, " ");
    }
    printf("\nSamoe dlinnoe slovo - %s", strmax);
    delete[]strmax;
    delete[]buf;
    getch();
    return 0;
}
spooky81
0 / 0 / 0
Регистрация: 11.05.2013
Сообщений: 16
11.05.2013, 22:56  [ТС]     Дана строка символов, состоящая из цифр и пробелов. Вывести на экран слово с максимальной длиной #9
Всем большое спасибо))
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
12.05.2013, 13:16     Дана строка символов, состоящая из цифр и пробелов. Вывести на экран слово с максимальной длиной #10
yoghurt92, пожалуйста, будьте более внимательны (пост №6)
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
12.05.2013, 13:41     Дана строка символов, состоящая из цифр и пробелов. Вывести на экран слово с максимальной длиной #11
xtorne21st, я внимателен Просто вы предлагаете вариант с Stl после того как ТС уточнил, что нужны С-строки Хотя ваш вариант мне понравился больше
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.05.2013, 13:45     Дана строка символов, состоящая из цифр и пробелов. Вывести на экран слово с максимальной длиной
Еще ссылки по теме:

C++ Дана строка, состоящая из групп нулей и единиц. Найти и вывести на экран группы с четным количеством символов
C++ Дана строка символов, состоящая из произвольного текста, слова раз-делены пробелами. Вывести на экран порядковый номер слова, накрывающего k позицию
Дана строка символов что складаютья из цифр разделенных пробелами. Вывести на экран числа этой строки в порядке возрастания их значений C++

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

Или воспользуйтесь поиском по форуму:
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
12.05.2013, 13:45     Дана строка символов, состоящая из цифр и пробелов. Вывести на экран слово с максимальной длиной #12
yoghurt92, там также есть рабочий вариант с с-сроками
Yandex
Объявления
12.05.2013, 13:45     Дана строка символов, состоящая из цифр и пробелов. Вывести на экран слово с максимальной длиной
Ответ Создать тему
Опции темы

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