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

Массив символов (Подсчитать количество слов в строке, при условии, что в качестве разделителя слов используется один или несколько пробелов) - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.93
Pe4eNbKo_O
 Аватар для Pe4eNbKo_O
22 / 22 / 0
Регистрация: 15.10.2012
Сообщений: 94
18.02.2013, 11:15     Массив символов (Подсчитать количество слов в строке, при условии, что в качестве разделителя слов используется один или несколько пробелов) #1
Написать программу, в которой с клавиатуры вводится строка символов. Подсчитать количество слов в строке, при условии, что в качестве разделителя слов используется один или несколько пробелов. Подсчет количества слов в строке оформить в виде функции.

Примечание: В качестве вводного материала к задаче поясняется, что: 1) слово представляет собой цепочку любых символов отличных от пробела; 2) в алгоритме следует обязательно учесть ситуации, когда исходная строка начинается и заканчивается одним или несколькими пробелами; 3) в результате на экран вывести исходную строку и количество слов в ней.
При вводе строки содержащей пробелы, можно использовать функцию getline объекта cin, чтобы текст после пробела не игнорировался, например:
cin.getline(с,sizeof(с))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.02.2013, 11:15     Массив символов (Подсчитать количество слов в строке, при условии, что в качестве разделителя слов используется один или несколько пробелов)
Посмотрите здесь:

C++ В заданной строке определить количество слов (в строке может содержаться несколько пробелов подряд).
Подсчитать в строке количество пробелов и символов C++
Посчитать количество слов во введенной строке символов, начинающихся с «Т» или «т» C++
Подсчитать количество слов в строке. Не пойму что не так C++
C++ Дана строка. Словом в ней назовем последовательность подряд идущих латинских букв (больших или маленьких). Подсчитать количество слов в строке
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SummerRain
 Аватар для SummerRain
325 / 324 / 17
Регистрация: 16.12.2012
Сообщений: 544
18.02.2013, 11:52     Массив символов (Подсчитать количество слов в строке, при условии, что в качестве разделителя слов используется один или несколько пробелов) #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
#include <iostream>
#include <string>
 
int getNumofWords(const std::string& s) {
    typedef std::string::size_type str_size;
    str_size i = 0;
    int count = 0;
    while (i != s.size()) {
        while (isspace(s[i]) && i != s.size())
            ++i;
        str_size j = i;
        while (!isspace(s[j]) && j != s.size())
            ++j;
        if (i != j) {
            ++count;
            i = j;
        }
    }
    return count;
}
int main()
{
    std::string str;
    std::getline(std::cin, str);    
    std::cout << getNumofWords(str);
    system("PAUSE");
    return 0;
}
Pe4eNbKo_O
 Аватар для Pe4eNbKo_O
22 / 22 / 0
Регистрация: 15.10.2012
Сообщений: 94
18.02.2013, 12:08  [ТС]     Массив символов (Подсчитать количество слов в строке, при условии, что в качестве разделителя слов используется один или несколько пробелов) #3
что-то не то ..
SummerRain
 Аватар для SummerRain
325 / 324 / 17
Регистрация: 16.12.2012
Сообщений: 544
18.02.2013, 12:10     Массив символов (Подсчитать количество слов в строке, при условии, что в качестве разделителя слов используется один или несколько пробелов) #4
Цитата Сообщение от Pe4eNbKo_O Посмотреть сообщение
что-то не то ..
что именно? у меня все работает как надо (компилятор MSVS 2010)
Pe4eNbKo_O
 Аватар для Pe4eNbKo_O
22 / 22 / 0
Регистрация: 15.10.2012
Сообщений: 94
18.02.2013, 12:13  [ТС]     Массив символов (Подсчитать количество слов в строке, при условии, что в качестве разделителя слов используется один или несколько пробелов) #5
у меня в 2012 при компиляции просто пустое окно, можно скрин того, что должно выводить ?
SummerRain
 Аватар для SummerRain
325 / 324 / 17
Регистрация: 16.12.2012
Сообщений: 544
18.02.2013, 12:29     Массив символов (Подсчитать количество слов в строке, при условии, что в качестве разделителя слов используется один или несколько пробелов) #6
[IMG]http://s017.***********/i431/1302/71/64abfcece972.jpg[/IMG]

Добавлено через 6 минут
[IMG]http://s020.***********/i715/1302/17/487197ca30de.jpg[/IMG]
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
18.02.2013, 13:45     Массив символов (Подсчитать количество слов в строке, при условии, что в качестве разделителя слов используется один или несколько пробелов) #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int word_count(char *s)
{
    int count = 0;
    char *p = strtok(s, " ");
    while(p != NULL) ++count, p = strtok(NULL, " ");
    return count;
}
 
int main()
{ 
    char s[256];
    std::cin.getline(s, 256, '\n');
    std::cout<<"String: "<<s<<std::endl;
    std::cout<<word_count(s)<<std::endl;
    std::cin.get();
}
Pe4eNbKo_O
 Аватар для Pe4eNbKo_O
22 / 22 / 0
Регистрация: 15.10.2012
Сообщений: 94
18.03.2013, 12:03  [ТС]     Массив символов (Подсчитать количество слов в строке, при условии, что в качестве разделителя слов используется один или несколько пробелов) #8
можете прокоментировать строки, пожалуйста

Добавлено через 38 минут
можете прокоментировать каждую строку, пожалуйста, о4ень важно
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
18.03.2013, 12:05     Массив символов (Подсчитать количество слов в строке, при условии, что в качестве разделителя слов используется один или несколько пробелов) #9
Цитата Сообщение от Pe4eNbKo_O Посмотреть сообщение
прокоментировать каждую строку

Не по теме:

Комментировать каждую строку не спортивно. Сам хоть что-нибудь уразумей, а потом напиши, какая строка какие затруднения вызывает.

Pe4eNbKo_O
 Аватар для Pe4eNbKo_O
22 / 22 / 0
Регистрация: 15.10.2012
Сообщений: 94
25.03.2013, 11:17  [ТС]     Массив символов (Подсчитать количество слов в строке, при условии, что в качестве разделителя слов используется один или несколько пробелов) #10
Цитата Сообщение от SummerRain Посмотреть сообщение
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
#include <iostream>
#include <string>
 
int getNumofWords(const std::string& s) {
    typedef std::string::size_type str_size;
    str_size i = 0;
    int count = 0;
    while (i != s.size()) {
        while (isspace(s[i]) && i != s.size())
            ++i;
        str_size j = i;
        while (!isspace(s[j]) && j != s.size())
            ++j;
        if (i != j) {
            ++count;
            i = j;
        }
    }
    return count;
}
int main()
{
    std::string str;
    std::getline(std::cin, str);    
    std::cout << getNumofWords(str);
    system("PAUSE");
    return 0;
}
буду очень благодарен за комментрарии к строкам))
SummerRain
 Аватар для SummerRain
325 / 324 / 17
Регистрация: 16.12.2012
Сообщений: 544
25.03.2013, 12:59     Массив символов (Подсчитать количество слов в строке, при условии, что в качестве разделителя слов используется один или несколько пробелов) #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
#include <iostream>
#include <string>
 
int getNumofWords(const std::string& s) {
    typedef std::string::size_type str_size;
    str_size i = 0;      // устанавливаем индекс на 0
    int count = 0;   // счётчик слов
    while (i != s.size()) {   // и пробегаемся по строке до конца
        while (isspace(s[i]) && i != s.size())   // пока элемент строки пробел идём дальше
            ++i;
        str_size j = i;    // дошли до первого не пробела, т.е. i - индекс первой буквы слова
        while (!isspace(s[j]) && j != s.size()) // теперь пока элемент строки НЕ пробел идём дальше
            ++j;          // а j - индекс элемента, следующего за последней буквой
        if (i != j) {  // и если эти индексы не равны, то значит мы нашли слово, увеличиваем счётчик
            ++count;
            i = j;          // и приравниваем индекс i к j 
        }
    }
    return count; // возвращаем количество слов
}
int main()
{
    std::string str;
    std::getline(std::cin, str);    
    std::cout << getNumofWords(str);
    system("PAUSE");
    return 0;
}
P.S. а почему вы так запоздало реагируете? Медленный интернет?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.03.2013, 23:19     Массив символов (Подсчитать количество слов в строке, при условии, что в качестве разделителя слов используется один или несколько пробелов)
Еще ссылки по теме:

Найти в предложении количество слов, после которых стоит несколько пробелов и удалить их C++
C++ Дан текст, в котором слова разделены одним пробелом. а) Подсчитать количество слов в данной строке. б) Подсчитать количество букв а в последнем слове
C++ Пример из книги Лафоре. Подсчитать количество слов и символов в строке

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

Или воспользуйтесь поиском по форуму:
Pe4eNbKo_O
 Аватар для Pe4eNbKo_O
22 / 22 / 0
Регистрация: 15.10.2012
Сообщений: 94
26.03.2013, 23:19  [ТС]     Массив символов (Подсчитать количество слов в строке, при условии, что в качестве разделителя слов используется один или несколько пробелов) #12
да) и времени нету ... огромное Вам спасибо)
Yandex
Объявления
26.03.2013, 23:19     Массив символов (Подсчитать количество слов в строке, при условии, что в качестве разделителя слов используется один или несколько пробелов)
Ответ Создать тему
Опции темы

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