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

Посчитать количество слов в строке

21.10.2014, 17:07. Показов 1941. Ответов 8
Метки нет (Все метки)

Всем привет!Зарегался я на форуме недавно,минут 5 назад.У меня есть проблема,моя программа(внизу)должна считать сколько слов в строке.Мне кажется,что я написал ее верно.Но она не работает(когда вводишь строку программа закрывается).Помогите пожалуйста.
П.С-я школьнег.Работаю в Dev-CPP.
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
#include <conio.h>
#include <cstring>
#include <cctype>
 
 
 
  using std::cout;
  using std::endl;
  using std::cin;
  
int main()
{
 
   setlocale ( 0 , "Russian");
   
   char str1[80];
   
   cout << "Enter string :";
   cin.getline(str1,80);
   
   
   int numWords = 0; 
   
   bool inWord = false;
   
   // isalpha() 
   
   for(int i(0);str1[i] != '/0';i++)
   {
    if(isalpha(str1[i]) && !(inWord))
    {
    numWords++;
    inWord = true;
    
    
    }
    if(!isalpha(str1[i]))
    inWord = false;
    
   }
   
   cout << numWords << endl;
   
   
   _getch();
   return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.10.2014, 17:07
Ответы с готовыми решениями:

Посчитать количество слов в строке
Здравствуйте! Дайте пожалуйста пример функции которая считает количество слов с строке с помощью...

Посчитать количество слов в строке
Доброго времени суток. Нужно выяснить, пуст элемент строки или нет: string s; for(int = 0; i &lt;...

Посчитать количество слов в строке
Здравствуйте, я не знаю в чем дело, но прога всегда выдает что в строке 1 слово. #include...

Посчитать количество слов в строке
Задача такая Ввести строку символов. вывести на экран строку, посчитать количество слов в строке....

8
7089 / 6087 / 2777
Регистрация: 14.04.2014
Сообщений: 26,195
21.10.2014, 17:26 2
А какую строку вводишь? Пример.
0
2825 / 1634 / 252
Регистрация: 03.12.2007
Сообщений: 4,222
21.10.2014, 17:31 3
Цитата Сообщение от Eangry Посмотреть сообщение
C++
1
2
for(int i(0);str1[i] != '/0';i++)
                        ^^^^
Неужели warning'а нет?
0
37 / 37 / 25
Регистрация: 30.10.2013
Сообщений: 211
21.10.2014, 17:46 4
Eangry,
C++
1
for(int i(0);str1[i] != '/0';i++)
wtf?
мб хотя бы
C++
1
for(int i(0);i<=strlen(str1);i++)
0
188 / 187 / 46
Регистрация: 24.03.2011
Сообщений: 670
21.10.2014, 18:37 5
Что, что, а strlen уж точно не лучшее решение. По кр. мере в таком варианте использования...
0
23 / 23 / 6
Регистрация: 23.03.2013
Сообщений: 245
21.10.2014, 21:06 6
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
31
32
33
34
35
#include <iostream>
#include <string>
 
using namespace std;
int main( )
{
 
    setlocale( 0 , "Russian" );
 
    char  str1[256];
 
    cout << "Enter string :";
    cin.getline(  str1,256 );
 
    int numWords = 0;
    int i = 0;
 
    while ( str1[ i ] != 0 )
    {
        while ( ( !ispunct( str1[ i ] ) && !isspace( str1[ i ] ) ) && str1[ i ] != 0 )
        {
            i++;
        }
 
        numWords++;
        
        while ( ( ispunct( str1[ i ] ) || isspace( str1[ i ] ) ) && str1[ i ] != 0 )
        {
            i++;
        }
    }
 
    cout << numWords << endl;
    system( "pause" );
}
Добавлено через 8 минут
И нужно отключить DEBUG (в release) что бы не было ошибок при проверке русских символов

Добавлено через 1 минуту
Немного изменил код (выдавало на 1 слово больше) и удалил лишнее
0
5480 / 4875 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
22.10.2014, 03:07 7
Цитата Сообщение от karaulov6 Посмотреть сообщение
И нужно отключить DEBUG (в release) что бы не было ошибок при проверке русских символов
Приводить символы к unsigned char.
0
С чаем беда...
Эксперт CЭксперт С++
9283 / 4776 / 1296
Регистрация: 18.10.2014
Сообщений: 10,911
22.10.2014, 03:41 8
Лучший ответ Сообщение было отмечено Eangry как решение

Решение

Оригинальный код написан нормально, за исключением опечатки с '/0' (надо '\0'). Не виду никаких причин переделывать организацию циклов. И да, либо приводить символы к `unsigned`, либо настроить компилятор на беззнаковый 'char'.

Добавлено через 15 минут
Однако, если уж мы занимаемся С++, то можно посоветовать пользоваться 'std::string'. И, если уж на то пошло, задача решается элементарно средствами стандартной библиотеки

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <cctype>
#include <string>
#include <algorithm>
#include <iterator>
 
bool is_same_class(unsigned char a, unsigned char b) {
  return std::isalpha(a) == std::isalpha(b);
}
 
int main() {
   std::cout << "Enter string :";
 
   std::string str;
   std::getline(std::cin, str);
 
   std::string str_compressed;
   std::unique_copy(str.begin(), str.end(), std::back_inserter(str_compressed), is_same_class);
 
   std::cout << std::count_if(str_compressed.begin(), str_compressed.end(), std::isalpha) << std::endl;
}
надо лишь решить, какие типы символов образуют слова, а какие нет. Как насчет цифр?
1
5480 / 4875 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
22.10.2014, 04:41 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 <iostream>
#include <string>
#include <sstream>
 
using std::cout;
using std::endl;
using std::cin;
using std::string;
using std::istringstream;
 
int main() 
{
   cout << "Enter the string: ";
 
   string str;
   getline(cin, str);
   istringstream s(str);
 
   int count_word = 0;
   string word;
   while (s >> word)
       ++count_word;
   
   cout << count_word << endl;
 
   cin.get();
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.10.2014, 04:41

Посчитать количество слов в строке
Посчитать количество слов в строке

Посчитать количество слов в заданной строке
Вычислить значение f= {q}^{sin(x)} функции где q – количество символов, которые надо найти в...

Посчитать количество слов в строке, содержащих 4 буквы
Дорогие форумчане! Пол дня воюю с этой задачей. Разобрался с решением: как сосчитать кол-во слов в...

Посчитать и вывести количество непохожих слов в строке
В общем проблема такова... Нужно посчитать и вывести количество не похожих слов в строке. Никак не...


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

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

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