Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
SpartakusMd
21 / 21 / 2
Регистрация: 29.03.2010
Сообщений: 172
#1

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

22.12.2011, 00:13. Просмотров 465. Ответов 7
Метки нет (Все метки)

Здраствуйте!
Есть задача где нужно найти самое длинное и самое короткое слово в тексте. В програме использовал strtok но не работает, при повторном вызове выдаёт NULL.
Здесь код:
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 <stdio.h>
#include <conio.h>
#include <string.h>
 
int main ()
{
    char text[100], *cuvint, *cuvintmin, *cuvintmax;
    int i, k;
    
    printf("Dati textul:\n");
    scanf("%s", &text);
    
    cuvint = strtok(text, " .,:;?!");
    cuvintmax = cuvint;
    cuvintmin = cuvint;
    while(cuvint) {
        if(strlen(cuvint) > strlen(cuvintmax)) cuvintmax = cuvint;
        if(strlen(cuvint) < strlen(cuvintmin)) cuvintmin = cuvint;
        cuvint = strtok(NULL, " .,:;?!");
    }
 
    printf("cuvintmax este %s, cuvintmin este %s.", cuvintmax, cuvintmin);
 
    getch();
    return 0;
}
Переменая cuvintmax - самое длинное слово а cuvintmin - самое короткое.
Как доделать програму?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2011, 00:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Strtok() и самое длинное слово (C++):

Строки. В заданном тексте найти самое длинное слово и самое длинное предложение. - C++
Задача: В заданном тексте найти самое длинное слово и самое длинное предложение. Помогите решить На СИ++ в Visual Studio.

Найти в тексте самое длинное слово и самое длинное предложение - C++
вписать текст с клавиатуры и найти в этом тексте самое длинное слово и самое длинное предложение.Предложения должны быть разделены точкой.

Поменять местами самое длинное слово и самое короткое слово в тексте - C++
Пусть есть двумерный массив, заполненный символами. Рассматривать его как многострочный текст, слова в котором разделены одним или...

В заданной строке определить самое длинное и самое короткое слово - C++
Ввести несколько строк,каждая из которых содержит некоторое количество слов.В заданной строке определить самое длинное и самое короткое...

Найдите самое длинное, и самое короткое слово в заданном предложении - C++
Найдите самое длинное и самое короткое слово в заданном предложении.

Дан текст из нескольки строк, определить самое длинное и самое короткое слово - C++
Вот задание: Дан текст из нескольки строк, определить самое длинное и самое короткое слово.... Я смог решить тока для одной...

7
Ree.exe
56 / 56 / 4
Регистрация: 01.08.2011
Сообщений: 141
22.12.2011, 00:46 #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
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include<iostream>
using namespace std;
 const char* razd=" .,\0";
int main ()
{
    char text[100], *cuvint, *cuvintmin, *cuvintmax;
    int i, k;
    
    cout<<"Dati textul:\n";
    cin.getline(text,100);
    
    cuvint = strtok(text,razd );
    cuvintmax = cuvint;
    cuvintmin = cuvint;
 
    while(  cuvint !=NULL)
    {
        
        if( strlen(cuvint) > strlen(cuvintmax) )
            cuvintmax=cuvint;
        if( strlen(cuvint) <  strlen(cuvintmin) )
            cuvintmin=cuvint;
        cuvint = strtok(NULL,razd );
    }
    std::cout<<"max-> "<<cuvintmax<<" min->"<<cuvintmin;
 
    return 0;
}

Не по теме:

Вот тут посмотри про strtop http://127.0.0.1:47873/help/0-4600/m...etOS%3aWindows

1
SpartakusMd
21 / 21 / 2
Регистрация: 29.03.2010
Сообщений: 172
22.12.2011, 00:53  [ТС] #3
Ree.exe, А на Си можно, а то мы пока учим Си . А за это пока спасибо.
0
Ree.exe
56 / 56 / 4
Регистрация: 01.08.2011
Сообщений: 141
22.12.2011, 01:11 #4
К сожалению не смогу.

Не по теме:

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



Добавлено через 3 минуты
C++
1
scanf("%s[]", &text);
а вот так уже будет норм работать
String, up to first white-space character (space, tab or newline). To read strings not delimited by space characters, use set of square brackets ( [ ]),
0
SpartakusMd
21 / 21 / 2
Регистрация: 29.03.2010
Сообщений: 172
22.12.2011, 01:38  [ТС] #5
C++
1
scanf("%s[]", &text);
не работает но
C++
1
scanf("%[a-z A-Z ' ']", &text);
работает. Спасибо за потраченое время
0
easybudda
22.12.2011, 02:04
  #6

Не по теме:

Ree.exe, а ссылки на localhost - это прикол такой?

0
Ree.exe
22.12.2011, 02:13
  #7

Не по теме:

Цитата Сообщение от easybudda Посмотреть сообщение
Ree.exe, а ссылки на localhost - это прикол такой?
ой

0
alkagolik
Заблокирован
22.12.2011, 02:26 #8
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
41
42
43
44
45
46
47
48
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
void setval( tmp, min, max, minval, maxval, p )
int tmp;
int *min, *max;
char **minval, **maxval, **p;
{
    if ( tmp < *min ){
        *min = tmp;
        *minval = *p;
    }
    if ( tmp > *max ){
        *max = tmp;
        *maxval = *p;
    }
}
 
int main ( void )
{
    char *str = "this is a very big string", *p = str, *t = p;
    char *minval, *maxval;
    int min, max, tmp;
 
    min = ( ( p = strchr( t, ' ' ) ) - t );
    tmp = max = min;
    p = ( p ) ? ( p + 1 ) : NULL;
    t = p;
 
    while ( (p = strchr( t, ' ' ) ) ){
        tmp = ( p - t );
        setval( tmp, &min, &max, &minval, &maxval, &t );
        t = ++p;
    }
    tmp = ( &str[ strlen( str ) ] - t );
    setval( tmp, &min, &max, &minval, &maxval, &t );
    printf( "\nразмер минимального слова %i, слово: ", min );
    while ( min-- )
        putchar( *minval++);
    puts("");
    printf( "\nразмер максимального слова %i, слово: ", max );
    while ( max-- )
        putchar( *maxval++);
    puts("");
 
    return 0;
}
0
22.12.2011, 02:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.12.2011, 02:26
Привет! Вот еще темы с ответами:

Ввести строку, содержащую несколько слов. Определить самое длинное и самое короткое слово - C++
Здравствуйте, не могли бы мне помочь с кодом. Как его переписать, чтобы программа работала? #include &lt;iostream&gt; #include &lt;cstdlib&gt; ...

Напечатать самое длинное и самое короткое слово в строке - C++
Напечатать самое длинное и самое короткое слово в строке в С++

Напечатать самое длинное и самое короткое слово в строке - C++
. Напечатать самое длинное и самое короткое слово в этой строке. Вроде все выводиться но преподаватель задал вопрос что если одинаковые...

Найти самое длинное и самое короткое слово в тексте - C++
найти самое длинное и самое короткое слово в тексте #include &quot;stdafx.h&quot;endl; #include &lt;iostream&gt; #include &lt;string&gt; #include...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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