Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/16: Рейтинг темы: голосов - 16, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 11.05.2013
Сообщений: 16

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

11.05.2013, 21:51. Показов 3481. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите, выдает ошибку в проверке условия цикла
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;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.05.2013, 21:51
Ответы с готовыми решениями:

Дана строка символов, состоящая из букв и цифр. Вывести на экран число, состоящее их цифр данной строки
Дана строка символов, состоящая из букв и цифр. Вывести на экран число, состоящее их цифр данной строки.

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

Дана строка символов, состоящая из цифр, разделенных пробелами. Вывести на экран числа этой строки в порядке возрастан
При вводе чисел к примеру 5 3 2 1 , выдает непонятные цифры 3251325032490 ...

11
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
11.05.2013, 22:13
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;
}
0
0 / 0 / 0
Регистрация: 11.05.2013
Сообщений: 16
11.05.2013, 22:16  [ТС]
Спасибо! Но нужно использовать строки С))
0
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
11.05.2013, 22:27
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, " ");
    }
вот так вставьте)
1
интересующийся
311 / 282 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
11.05.2013, 22:30
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;
}
1
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
11.05.2013, 22:37
xtorne21st,
Цитата Сообщение от spooky81 Посмотреть сообщение
Спасибо! Но нужно использовать строки С))
0
0 / 0 / 0
Регистрация: 11.05.2013
Сообщений: 16
11.05.2013, 22:44  [ТС]
Большое спасибо! проблема еще в том, что если первое слово самое длинное - выводит мусор((
0
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
11.05.2013, 22:49
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;
}
1
0 / 0 / 0
Регистрация: 11.05.2013
Сообщений: 16
11.05.2013, 22:56  [ТС]
Всем большое спасибо))
0
интересующийся
311 / 282 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
12.05.2013, 13:16
yoghurt92, пожалуйста, будьте более внимательны (пост №6)
0
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
12.05.2013, 13:41
xtorne21st, я внимателен Просто вы предлагаете вариант с Stl после того как ТС уточнил, что нужны С-строки Хотя ваш вариант мне понравился больше
0
интересующийся
311 / 282 / 93
Регистрация: 25.09.2010
Сообщений: 1,056
12.05.2013, 13:45
yoghurt92, там также есть рабочий вариант с с-сроками
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.05.2013, 13:45
Помогаю со студенческими работами здесь

Дана строка, состоящая из двух слов. Вывести на экран отдельно каждое слово
Нужно вывести строку через инпутбокс и вывести в текст бокс 1 первое слово и в текст бокс 2 второе слово Заранее спасибо

Дана строка символов, состоящая из цифр, разделенных пробелами. Вывести четные числа этой строки
Строка берется из ListBox. Вывести числа надо в Label. AnsiString. Помогите пожалуйста. Добавлено через 1 час 23 минуты { ...

Дана строка символов, состоящая из цифр, разделенных пробелами. Вывести четные числа этой строки
Дана строка символов, состоящая из цифр, разделенных пробелами. Вывести четные числа этой строки если я ввожу 1 2 3 4 5, выводит 2 4,...

Дана строка символов, состоящая из цифр, разделенных пробелами. Вывести четные числа этой строки
Дана строка символов, состоящая из цифр, разделенных пробелами. Вывести четные числа этой строки. Например, вводим 4 2 42 3 12 Должно...

Дана строка символов, состоящая из цифр, разделенных пробелами. Вывести четные числа этой строки
Дана строка символов, состоящая из цифр, разделенных пробелами. Вывести четные числа этой строки. int k,i, nst; nst =...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru