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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.93
Pe4eNbKo_O
22 / 22 / 0
Регистрация: 15.10.2012
Сообщений: 94
#1

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

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

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

Примечание: В качестве вводного материала к задаче поясняется, что: 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++
#include <iostream> #include <conio.h> // для getche() using namespace std; int main() { setlocale(LC_ALL, "Rus"); int...

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

Посчитать количество слов во введенной строке символов, начинающихся с «Т» или «т» - C++
Собственно вообще не осознаю как делать, может кто помочь? Есть наработка.. но почему то не работает, не хочет считать. Была мысль и...

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

Подсчитать в строке количество пробелов и символов - C++
Задача: создать программу, которая позволяет ввести строку, и после считает в ней количество пробелов и символов. Вот код: #include...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
SummerRain
326 / 325 / 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
22 / 22 / 0
Регистрация: 15.10.2012
Сообщений: 94
18.02.2013, 12:08  [ТС] #3
что-то не то ..
SummerRain
326 / 325 / 17
Регистрация: 16.12.2012
Сообщений: 544
18.02.2013, 12:10 #4
Цитата Сообщение от Pe4eNbKo_O Посмотреть сообщение
что-то не то ..
что именно? у меня все работает как надо (компилятор MSVS 2010)
Pe4eNbKo_O
22 / 22 / 0
Регистрация: 15.10.2012
Сообщений: 94
18.02.2013, 12:13  [ТС] #5
у меня в 2012 при компиляции просто пустое окно, можно скрин того, что должно выводить ?
SummerRain
326 / 325 / 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
Почетный модератор
6478 / 2253 / 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
22 / 22 / 0
Регистрация: 15.10.2012
Сообщений: 94
18.03.2013, 12:03  [ТС] #8
можете прокоментировать строки, пожалуйста

Добавлено через 38 минут
можете прокоментировать каждую строку, пожалуйста, о4ень важно
Vourhey
Почетный модератор
6478 / 2253 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
18.03.2013, 12:05 #9
Цитата Сообщение от 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
326 / 325 / 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. а почему вы так запоздало реагируете? Медленный интернет?
Pe4eNbKo_O
22 / 22 / 0
Регистрация: 15.10.2012
Сообщений: 94
26.03.2013, 23:19  [ТС] #12
да) и времени нету ... огромное Вам спасибо)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.03.2013, 23:19
Привет! Вот еще темы с ответами:

Найти в предложении количество слов, после которых стоит несколько пробелов и удалить их - C++
Ребята помогите я на экзамене) Все очень печально)

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

Функция, получает строку слов и рзделителей, а на выходе имеет массив слов из строки и количество этих слов - C++
мне нужна функция, которая во входе получает строку слов и рзделителей (&quot; &quot;, &quot;,&quot;, &quot;.&quot;, &quot;_&quot;, &quot;&quot;&quot;), а на выходе имеет массив слов из строки...

Подсчитать количество слов в строке - C++
Составить программу, подсчитывает число слов в строке, введенного пользовате-чем. Для этого написать функцию с прототипом: int num_word...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
26.03.2013, 23:19
Ответ Создать тему
Опции темы

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