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

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

Войти
Регистрация
Восстановить пароль
 
 
Vlad_fractal
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 78
#1

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

25.11.2013, 13:59. Просмотров 416. Ответов 17
Метки нет (Все метки)

Условие задания понятно из темы.
Вот мой код:
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++):

Подсчитать колличество слов начинающихся с первой буквы первого слова - C++
Дана строка ,которая водится с клавиатуры. Подсчитать колличество слов начинающихся с первой буквы первого слова #include &quot;stdafx.h&quot; ...

Подсчитать колличество слов очереди, которое начинается и заканчивается одной и той же литерой. - C++
Прошу помочь в решении задания:Информационное поле элемента очереди-строка. Подсчитать колличество слов очереди, которое начинается и...

Вводится с клавиатуры строка .Подсчитатать колличество слов начинающихся с первой буквы этого слова - C++
Вводится с клавиатуры строка .Подсчитатать колличество слов начинающихся с первой буквы этого слова

Вводится с клавиатуры слово .Подсчитатать колличество слов начинающихся с первой буквы этого слова - C++
Вводится с клавиатуры строка .Подсчитатать колличество слов начинающихся с первой буквы этого слова

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

Количество слов в заданной строке (для каждого из слов) - C++
дано символьная строка. Слово-последовательность символов между пробелами, не содержащие пробелы усередени себя. Для каждого из слов...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Liden
19 / 19 / 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
119 / 119 / 23
Регистрация: 22.01.2013
Сообщений: 298
25.11.2013, 14:08 #3
можно проще
C++
1
cout<<"V stroke "<<x+1<<" slov.";
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
119 / 119 / 23
Регистрация: 22.01.2013
Сообщений: 298
25.11.2013, 14:15 #5
Vlad_fractal, у тебя прога больше похожа на счетчик пробелов
Liden
19 / 19 / 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
367 / 214 / 41
Регистрация: 26.12.2012
Сообщений: 708
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
415 / 415 / 85
Регистрация: 28.11.2010
Сообщений: 1,183
Завершенные тесты: 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
367 / 214 / 41
Регистрация: 26.12.2012
Сообщений: 708
26.11.2013, 10:48 #11
vua72 результат работы
Миниатюры
Колличество слов в строке  
vua72
415 / 415 / 85
Регистрация: 28.11.2010
Сообщений: 1,183
Завершенные тесты: 1
26.11.2013, 19:56 #12
Ну и что вас удивляет? Добавляйте разделители в delim

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

Добавлено через 6 минут
можете проверить токен на символы
MicM
822 / 489 / 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
367 / 214 / 41
Регистрация: 26.12.2012
Сообщений: 708
26.11.2013, 20:53 #14
MicM что ваш код,что мой работают одинаково но все таки правильней наверное не
C++
1
 int i = 0;
а
C++
1
 unsigned int i = 0;
иначе идет не равнозначное сравнение.
vua72
415 / 415 / 85
Регистрация: 28.11.2010
Сообщений: 1,183
Завершенные тесты: 1
26.11.2013, 22:05 #15
Genn55,
Enter string f f g g g g
6
??????
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.11.2013, 22:05
Привет! Вот еще темы с ответами:

Cтрока: Определить количество средних слов в строке и какое из слов начинается на большую по коду букву - C++
Определить количество средних слов в строе и какое из слов начинается на большую по коду букву. Напишите плз код данной программы...

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

Вычыслить количество слов в строке, длинна которых равна 3 символам и вывести их на экран, если же таких слов нет, то выдать об этом сообщение. - C++
Вычыслить количество слов в строке, длинна которых равна 3 символам и вывести их на экран, если же таких слов нет, то выдать об этом...

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


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

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

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