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

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

Войти
Регистрация
Восстановить пароль
 
lotos580
1 / 1 / 1
Регистрация: 25.05.2012
Сообщений: 60
#1

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

02.05.2014, 19:18. Просмотров 392. Ответов 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
#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
Посчитать количество слов во введенной строке и найти слова, которые начинаются с буквы t C++
В строке с найти количество слов заканчивающихся подстрокой с2 C++
C++ В строке с найти количество слов не содержащий подстроку
Удаление одинаковых слов в строке C++
Удаление одинаковых слов в строке C++
C++ В строке найти количество слов, которые содержат ровно три буквы «А»
Найти количество слов в строке, начищающихся с заданной буквы C++
Найти количество одинаковых слов, используя методы string C++
Удаление одинаковых слов в строке C++
C++ Cтроки, vector. Посчитать количество одинаковых слов в строке
C++ Найти количество определенных слов в строке

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Керра
 Аватар для Керра
1275 / 443 / 45
Регистрация: 24.08.2011
Сообщений: 2,131
02.05.2014, 19:29     Найти количество одинаковых слов в строке #2
Видимо потому, что strtok запоминает позицию только для одной строки. То есть вот для первой строки ты нашла первое слово, потом тебе надо первым аргументом передавать 0, потому что strtok запомнила ту строку. Но когда ты делаешь то же самое для другой строки, в ней уже другая строка сохранилась, и уже работает неправильно.
Разбей строку на массив указателей на слова, с помощью strtok собственно, и сравнивай их как при пузырьковой сортировке.
nmcf
4524 / 3862 / 1297
Регистрация: 14.04.2014
Сообщений: 15,138
02.05.2014, 19:32     Найти количество одинаковых слов в строке #3
Ты используешь strtok() одновременно с двумя разными строкам. Она будет сбиваться. После вызова strtok() с первым параметром не равным NULL, информация о предыдущей строке теряется.

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

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