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

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

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

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

22.12.2011, 00:13. Просмотров 457. Ответов 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 - самое короткое.
Как доделать програму?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2011, 00:13     Strtok() и самое длинное слово
Посмотрите здесь:

Сформировать новую строку, расположив в ее начале самое короткое слово, затем самое длинное, и все остальные - C++
Задание такое: В строке символов найти самое длинное и самое короткое слово. Сфор-мировать новую строку, расположив в ее начале самое...

самое длинное слово - C++
#include &lt;iostream&gt; using namespace std; int main() { char line; int cur = 0, max = 0, index = 0, i; cin &gt;&gt; line; for(i =...

Самое длинное слово - C++
Дана строка, содержащая пробелы. Найдите в ней самое длинное слово, выведите это слово и его длину. Формат входных данных Задана...

Самое длинное слово - C++
Помогите пожалуйста, #include &lt;cstring&gt; #include &lt;iostream&gt; using namespace std; #define N 200 void maxword(char* input) { ...

самое длинное слово - C++
нужно прокомментировать программу #include &lt;iostream.h&gt; #include &lt;string.h&gt; #include &lt;sstream&gt; #include&lt;conio.h&gt; using...

Самое длинное слово - C++
Здравствуйте, написала код поиска самого длинного слова в строке (строка заканчивается точкой). Находит слово верно, но выводит не...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ree.exe
56 / 56 / 4
Регистрация: 01.08.2011
Сообщений: 141
22.12.2011, 00:46     Strtok() и самое длинное слово #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

SpartakusMd
21 / 21 / 2
Регистрация: 29.03.2010
Сообщений: 172
22.12.2011, 00:53  [ТС]     Strtok() и самое длинное слово #3
Ree.exe, А на Си можно, а то мы пока учим Си . А за это пока спасибо.
Ree.exe
56 / 56 / 4
Регистрация: 01.08.2011
Сообщений: 141
22.12.2011, 01:11     Strtok() и самое длинное слово #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 ( [ ]),
SpartakusMd
21 / 21 / 2
Регистрация: 29.03.2010
Сообщений: 172
22.12.2011, 01:38  [ТС]     Strtok() и самое длинное слово #5
C++
1
scanf("%s[]", &text);
не работает но
C++
1
scanf("%[a-z A-Z ' ']", &text);
работает. Спасибо за потраченое время
easybudda
22.12.2011, 02:04
  #6

Не по теме:

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

Ree.exe
22.12.2011, 02:13
  #7

Не по теме:

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

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.12.2011, 02:26     Strtok() и самое длинное слово
Еще ссылки по теме:

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

Вывести самое длинное слово - C++
Код, представленный ниже, определяет длину самого длинного слова. Нужно вывести все слова, подходящие под эту длину.Лучше на простом си....

Найти самое длинное слово - C++
Помогите пожалуйста. Вот задания: 1 Слова в строке разделены пробелами. Найти самое длинное слово. 2. Слова в строке разделены...

Самое длинное слово в строке - C++
Нужно ввести строку и вывести, какое слово в этой строке самое длинное. Мой код не работает, подскажите, где ошибка? #include...


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

Или воспользуйтесь поиском по форуму:
alkagolik
Заблокирован
22.12.2011, 02:26     Strtok() и самое длинное слово #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;
}
Yandex
Объявления
22.12.2011, 02:26     Strtok() и самое длинное слово
Ответ Создать тему
Опции темы

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