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

Найти количество одинаковых слов в строке - C++

Восстановить пароль Регистрация
 
lotos580
1 / 1 / 1
Регистрация: 25.05.2012
Сообщений: 60
02.05.2014, 19:18     Найти количество одинаковых слов в строке #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
#include <iostream>
using namespace std;
 
int main()
{
    char str1[100] = "to be or not to be";
 
    char* leks = strtok(str1, " ");
    while(leks) // <======================================
    {
        int k = 0;
        cout << leks << " : ";
 
        char newStr[100] = "to be or not to be";
        char* l = strtok(newStr, " ");
        while(l) 
        {
            if(strcmp(l, leks) == 0)
                k++;
            l = strtok(0, " ");
        }
        cout << k << endl;
        leks = strtok(0, " ");
    }
    system("pause");
    return 0;
}
Не пойму, почему при добавлении второго strcmp первый(строка 9) работает неправильно? Прерывается на первом слове to, не пройдя полностью по всей строке.

Добавлено через 45 секунд
Если второго strcmp нет, то первый работает корректно...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.05.2014, 19:18     Найти количество одинаковых слов в строке
Посмотрите здесь:

C++ Найти количество слов в строке с использованием библиотечных функций string.h
В строке с найти количество слов заканчивающихся подстрокой с2 C++
C++ В строке с найти количество слов не содержащий подстроку
Удаление одинаковых слов в строке C++
Удаление одинаковых слов в строке C++
Найти количество слов в строке, начищающихся с заданной буквы C++
Удаление одинаковых слов в строке C++
C++ Cтроки, vector. Посчитать количество одинаковых слов в строке

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Керра
Модератор
 Аватар для Керра
1270 / 438 / 45
Регистрация: 24.08.2011
Сообщений: 2,123
02.05.2014, 19:29     Найти количество одинаковых слов в строке #2
Видимо потому, что strtok запоминает позицию только для одной строки. То есть вот для первой строки ты нашла первое слово, потом тебе надо первым аргументом передавать 0, потому что strtok запомнила ту строку. Но когда ты делаешь то же самое для другой строки, в ней уже другая строка сохранилась, и уже работает неправильно.
Разбей строку на массив указателей на слова, с помощью strtok собственно, и сравнивай их как при пузырьковой сортировке.
nmcf
4299 / 3720 / 1253
Регистрация: 14.04.2014
Сообщений: 14,551
02.05.2014, 19:32     Найти количество одинаковых слов в строке #3
Ты используешь strtok() одновременно с двумя разными строкам. Она будет сбиваться. После вызова strtok() с первым параметром не равным NULL, информация о предыдущей строке теряется.

Добавлено через 39 секунд
Уже ответили.
Yandex
Объявления
02.05.2014, 19:32     Найти количество одинаковых слов в строке
Ответ Создать тему
Опции темы

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