22 / 22 / 0
Регистрация: 15.10.2012
Сообщений: 94
1

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

18.02.2013, 11:15. Показов 5194. Ответов 11
Метки нет (Все метки)

Написать программу, в которой с клавиатуры вводится строка символов. Подсчитать количество слов в строке, при условии, что в качестве разделителя слов используется один или несколько пробелов. Подсчет количества слов в строке оформить в виде функции.

Примечание: В качестве вводного материала к задаче поясняется, что: 1) слово представляет собой цепочку любых символов отличных от пробела; 2) в алгоритме следует обязательно учесть ситуации, когда исходная строка начинается и заканчивается одним или несколькими пробелами; 3) в результате на экран вывести исходную строку и количество слов в ней.
При вводе строки содержащей пробелы, можно использовать функцию getline объекта cin, чтобы текст после пробела не игнорировался, например:
cin.getline(с,sizeof(с))
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.02.2013, 11:15
Ответы с готовыми решениями:

В заданной строке определить количество слов (в строке может содержаться несколько пробелов подряд).
В заданной строке определить количество слов (в строке может содержаться несколько пробелов подряд).

В заданной строке посчитать количество слов. Разделителем слов считается один или несколько ответов
В заданной строке посчитать количество слов. Разделителем слов считается один или несколько...

Подсчитать количество слов и пробелов в строке
Надотэ подсчитать количество слов и пробелов.как я не пытался- пробелы находит правильно,а слова...

Найти количество слов или пробелов в строке
Друзья, помогите написать программу, которая найдет количество слов в тексте, оканчивающимся...

11
328 / 327 / 92
Регистрация: 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;
}
1
22 / 22 / 0
Регистрация: 15.10.2012
Сообщений: 94
18.02.2013, 12:08  [ТС] 3
что-то не то ..
0
328 / 327 / 92
Регистрация: 16.12.2012
Сообщений: 544
18.02.2013, 12:10 4
Цитата Сообщение от Pe4eNbKo_O Посмотреть сообщение
что-то не то ..
что именно? у меня все работает как надо (компилятор MSVS 2010)
1
22 / 22 / 0
Регистрация: 15.10.2012
Сообщений: 94
18.02.2013, 12:13  [ТС] 5
у меня в 2012 при компиляции просто пустое окно, можно скрин того, что должно выводить ?
0
328 / 327 / 92
Регистрация: 16.12.2012
Сообщений: 544
18.02.2013, 12:29 6


Добавлено через 6 минут
1
Почетный модератор
7387 / 2633 / 280
Регистрация: 29.07.2006
Сообщений: 13,696
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();
}
1
22 / 22 / 0
Регистрация: 15.10.2012
Сообщений: 94
18.03.2013, 12:03  [ТС] 8
можете прокоментировать строки, пожалуйста

Добавлено через 38 минут
можете прокоментировать каждую строку, пожалуйста, о4ень важно
0
Почетный модератор
7387 / 2633 / 280
Регистрация: 29.07.2006
Сообщений: 13,696
18.03.2013, 12:05 9
Цитата Сообщение от Pe4eNbKo_O Посмотреть сообщение
прокоментировать каждую строку

Не по теме:

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

0
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;
}
буду очень благодарен за комментрарии к строкам))
0
328 / 327 / 92
Регистрация: 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. а почему вы так запоздало реагируете? Медленный интернет?
1
22 / 22 / 0
Регистрация: 15.10.2012
Сообщений: 94
26.03.2013, 23:19  [ТС] 12
да) и времени нету ... огромное Вам спасибо)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.03.2013, 23:19
Помогаю со студенческими работами здесь

Подсчитать в строке количество слов длиной пять символов
С клавиатуры вводится строка, состоящая из нескольких слов, отделенных друг от друга одним или...

Пример из книги Лафоре. Подсчитать количество слов и символов в строке
#include &lt;iostream&gt; #include &lt;conio.h&gt; // для getche() using namespace std; int main() {...

Подсчитать количество слов в строке. Не пойму что не так
Здравствуйте! Есть задание: подсчитать количество одинаковых слов в строке. Делаю линейный поиск,...

Подсчитать количество слов в строке, которые повторяются 3 и более раза с количеством символов больше 6
Console.WriteLine(&quot;Пов. слово&quot;); string pov = Console.ReadLine(); ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru