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

Колличество слов в строке - C++

Восстановить пароль Регистрация
 
Vlad_fractal
 Аватар для Vlad_fractal
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 78
25.11.2013, 13:59     Колличество слов в строке #1
Условие задания понятно из темы.
Вот мой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream.h>
#include <string.h>
main()
{
int x=0;
char s[100];
cout<<"Vvedite stroku: ";
cin.getline(s, 100);
for(int y=0; y<strlen(s); y++)
{
if(s[y]==' ')
x++;
}
cout<<"V stroke "<<x<<" slov.";
}
Вопрос такой, как мне учесть последнее слово? Заранее благодарю.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2013, 13:59     Колличество слов в строке
Посмотрите здесь:

C++ Число слов no в строке
Подсчитать колличество слов начинающихся с первой буквы первого слова C++
Вводится с клавиатуры строка .Подсчитатать колличество слов начинающихся с первой буквы этого слова C++
Вводится с клавиатуры слово .Подсчитатать колличество слов начинающихся с первой буквы этого слова C++
Подсчитать колличество слов очереди, которое начинается и заканчивается одной и той же литерой. C++
Поиск слов в строке C++
Замена слов в строке C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Liden
17 / 17 / 2
Регистрация: 19.11.2013
Сообщений: 83
25.11.2013, 14:02     Колличество слов в строке #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
29
30
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
using namespace std;
void main()
{
char str[255];
cout<<"Vvelidte stroku: ";
gets_s(str);//ввод символов
int a,b,c;
a=1;b=0,c=0;
if (str[0]==NULL){
cout<<"V stroke "<<b<<" slov"<<'\n';
}
else if (str[0]==' '){
    for (int i=0;i<strlen(str);i++){  
     if ((str[i]==' ') && (str[i+1]!=' ')){
         c++;}
    }
cout<<"V stroke "<<c<<" slov"<<'\n';
}
else{
for (int i=0;i<strlen(str);i++){  
     if ((str[i]==' ') && (str[i+1]!=' ')){
         a++;
     }}
cout<<"V stroke "<<a<<" slov"<<'\n';
}
system("pause");
}
bradobrei
Продам уран 238U
 Аватар для bradobrei
119 / 119 / 23
Регистрация: 22.01.2013
Сообщений: 298
25.11.2013, 14:08     Колличество слов в строке #3
можно проще
C++
1
cout<<"V stroke "<<x+1<<" slov.";
Vlad_fractal
 Аватар для Vlad_fractal
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 78
25.11.2013, 14:13  [ТС]     Колличество слов в строке #4
Цитата Сообщение от bradobrei Посмотреть сообщение
cout<<"V stroke "<<x+1<<" slov.";
А, ну конечно. Мог бы и сам додуматься, было бы желание. =)
Спасибо.
Liden, а у тебя слишком навороченный код, препод вопросами закидает, я и половину не смогу объяснить, но всё-равно спасибо.
bradobrei
Продам уран 238U
 Аватар для bradobrei
119 / 119 / 23
Регистрация: 22.01.2013
Сообщений: 298
25.11.2013, 14:15     Колличество слов в строке #5
Vlad_fractal, у тебя прога больше похожа на счетчик пробелов
Liden
17 / 17 / 2
Регистрация: 19.11.2013
Сообщений: 83
25.11.2013, 14:18     Колличество слов в строке #6
Vlad_fractal, так ты спрашивай, что непонятно) там вроде все просто)
Onito
0 / 0 / 0
Регистрация: 25.11.2013
Сообщений: 20
25.11.2013, 14:23     Колличество слов в строке #7
Цитата Сообщение от bradobrei Посмотреть сообщение
1
cout<<"V stroke "<<x+1<<" slov.";
это конечно проще но не учитывает если больше 1 пробела между словами
предлагаю вам испоьзовать флаг когда функция перебора строки встречает пробел она увеличивает число слов и меняет флаг так чтобы больше не инкрементировалось число слов, как тольок встречает буквы меняет флаг обратно и ждёт следующего пробела
Hsac
13 / 13 / 1
Регистрация: 30.06.2013
Сообщений: 157
25.11.2013, 15:09     Колличество слов в строке #8
твоя программа считает пробелы а не слова а если между словами 2 или больше пробела?
лучше воспользуйся библиотекой сctype вроде называлась там есть оператор isalpha
Genn55
342 / 189 / 37
Регистрация: 26.12.2012
Сообщений: 661
26.11.2013, 02:26     Колличество слов в строке #9
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 <stdlib.h>
#include <iostream>
#include <cstring>
#include <cctype>
 
using namespace std;
int main()
{
char str[80];
int sum = 0;
bool kur = false;
cout << "  Enter string  ";
cin.getline (str,80);
 for(int i = 0;str[i]!= '\0'; i ++)
 {
    if (isalpha(str[i])&& !(kur))
    {
        sum ++;
        kur = true;
    }
    if (!isalpha(str[i]))
    kur = false;
 }
 cout << sum << "\n";
    return 0;
 
}
vua72
414 / 414 / 85
Регистрация: 28.11.2010
Сообщений: 1,175
Завершенные тесты: 1
26.11.2013, 03:45     Колличество слов в строке #10
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
#include <iostream>
#include <cstring> // strtok
using namespace std;
int main() {
    int x = 0;
    const int bufsize = 256;
    char buf[bufsize];
    char * pch;
    const char * delim = " ,.-!?";
    cout << "Vvedite stroku: ";
    cin.getline(buf, bufsize);
    pch = strtok(buf, delim);
    if (pch) {
        while (pch != NULL) {
            x++;
            cout << pch << endl;
            pch = strtok(NULL, delim);
 
        }
        cout << "v stroke " << x << " slov.";
    } else {
        cout << "v stroke net slov\n";
    }
    return 0;
}
Genn55
342 / 189 / 37
Регистрация: 26.12.2012
Сообщений: 661
26.11.2013, 10:48     Колличество слов в строке #11
vua72 результат работы
Миниатюры
Колличество слов в строке  
vua72
414 / 414 / 85
Регистрация: 28.11.2010
Сообщений: 1,175
Завершенные тесты: 1
26.11.2013, 19:56     Колличество слов в строке #12
Ну и что вас удивляет? Добавляйте разделители в delim

Добавлено через 2 минуты
token - все что между разделителями

Добавлено через 6 минут
можете проверить токен на символы
MicM
 Аватар для MicM
820 / 487 / 90
Регистрация: 29.12.2009
Сообщений: 1,097
Завершенные тесты: 1
26.11.2013, 19:59     Колличество слов в строке #13
Как вариант
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
#include <iostream>
#include <string>
#include <cctype>
 
int main()
{
    std::string str;
    std::cout <<"Stroka: ";
    getline (std::cin, str);
    int k = 0;
    int i = 0;
    while (i<str.length())
    {
        if (isalpha(str.at(i)))
        {
            while (i<str.length() && isalpha(str.at(i)))
                ++i;
            ++k;
        }
        else ++i;
    }
    std::cout <<"Kol-vo slov: " <<k <<'\n';
    return 0;
}
Genn55
342 / 189 / 37
Регистрация: 26.12.2012
Сообщений: 661
26.11.2013, 20:53     Колличество слов в строке #14
MicM что ваш код,что мой работают одинаково но все таки правильней наверное не
C++
1
 int i = 0;
а
C++
1
 unsigned int i = 0;
иначе идет не равнозначное сравнение.
vua72
414 / 414 / 85
Регистрация: 28.11.2010
Сообщений: 1,175
Завершенные тесты: 1
26.11.2013, 22:05     Колличество слов в строке #15
Genn55,
Enter string f f g g g g
6
??????
Genn55
342 / 189 / 37
Регистрация: 26.12.2012
Сообщений: 661
26.11.2013, 22:23     Колличество слов в строке #16
Цитата Сообщение от vua72 Посмотреть сообщение
Genn55,
Enter string f f g g g g
6
??????
И что здесь не так?Разве предлог не слово? Уж по крайней мере не пробел,не символ и не цифра.
vua72
26.11.2013, 23:28
  #17

Не по теме:

Вы не правы, автор топика никак не оговаривал понятие "слово", поэтому и мой код, и ваш - правильные. Что вы хотели показать результатом работы? Что ":" 0 не слово? или (*? А где было огоорено, что такое слово?
aaasss dddfff - 'это не слова, f g далеко не предлоги.

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.11.2013, 00:00     Колличество слов в строке
Еще ссылки по теме:

ввести строку а с клавиатуры. вместо каждой точки поставить два знака вопроса. и подсчитать колличество слов в предложении C++
C++ Количество слов в строке
C++ Количество слов в строке
C++ Сравнение слов в строке
Замена слов в строке C++

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

Или воспользуйтесь поиском по форуму:
Genn55
342 / 189 / 37
Регистрация: 26.12.2012
Сообщений: 661
27.11.2013, 00:00     Колличество слов в строке #18

Не по теме:

где было огоорено, что такое слово?


...

Не по теме:

Тогда и проблемы нет.

Yandex
Объявления
27.11.2013, 00:00     Колличество слов в строке
Ответ Создать тему
Опции темы

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