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

Как можно подсчитать количество слов в предложении? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.65
chander
0 / 0 / 0
Регистрация: 07.03.2009
Сообщений: 5
08.03.2009, 13:45     Как можно подсчитать количество слов в предложении? #1
Маленький вопросик, как можно подсчитать количество слов в предложении. Я думал воспользоваться в качестве разделителя пробелом, но тогда, если предложение будет содержать одни пробелы, программа будет подсчитывать пробелы как разделители между словами и следовательно количество слов все-таки будет. Развейте дремучесть, очень прошу.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.03.2009, 13:45     Как можно подсчитать количество слов в предложении?
Посмотрите здесь:

C++ Подсчитать количество слов, которые встречаются в предложении ровно 1 раз
C++ Дан текстовый файл. Вывести на экран количество предложений в нём и количество слов в каждом предложении
Отсортировать слова в предложении по алфавиту и подсчитать количество слов C++
C++ Даны N предложений. Подсчитать количество слов в каждом предложении и вывести на печать
Подсчитать число слов в предложении, записанном в текстовом файле. Язык C++ C++
C++ Вводится предложение. Подсчитать количество слов и подсчитать количество букв в самом длинном слове
C++ Дан текст, в котором слова разделены одним пробелом. а) Подсчитать количество слов в данной строке. б) Подсчитать количество букв а в последнем слове
Подсчитать сколько слов в предложении C++
C++ Подсчитать, сколько слов в предложении
C++ Подсчитать количество слов во введенном предложении
Как подсчитать количество слов в файле C++
C++ Подсчитать количество слов в предложении (слово – это набор символов, разделённых пробелами)

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
XuTPbIu_MuHTAu
Эксперт C++
 Аватар для XuTPbIu_MuHTAu
2219 / 734 / 10
Регистрация: 27.05.2008
Сообщений: 1,507
08.03.2009, 15:15     Как можно подсчитать количество слов в предложении? #2
Используйте переменную-флаг. изначально флаг "опущен".

Если читаем буквенноциферный символ и флаг опущен - поднимаем флаг и увеличиваем счетчик
Если читаем буквду и флаг поднят - пропускаем букву
Если читаем пробел - "опускаем" флаг.
Примерно так :
C++
1
2
3
4
5
6
7
8
9
int flag = 0;
int counter = 0;
for(int i=0;i<strlen(str);i++) {
     if( isletter(str[i]) && !flag ) { 
           flag=1;
           counter++;
     }
     if( isspace(str[i]) ) flag=0;
};
chander
0 / 0 / 0
Регистрация: 07.03.2009
Сообщений: 5
08.03.2009, 15:46  [ТС]     Как можно подсчитать количество слов в предложении? #3
XuTPbIu_MuHTAu, Спасибо большое, понял, а теперь окончательный вопрос: как по заданному количеству слов вывести предложение из текста? Ведь для того, чтобы его вывести нужно задать начальную точку вывода и конечную, возможно ли это? Заранее спасибо.
XuTPbIu_MuHTAu
Эксперт C++
 Аватар для XuTPbIu_MuHTAu
2219 / 734 / 10
Регистрация: 27.05.2008
Сообщений: 1,507
08.03.2009, 15:53     Как можно подсчитать количество слов в предложении? #4
Тоже сохраняй значения во временных переменных.Скажем,
TStart - тут храни начало текущего предложения
TWords - тут кол-во слов в текущем предложении.
Если встречаешь точку(!?), проверяй,подходит ли кол-во слов к условию,если да - вызывай функцию печати предложения,которую предварительно напиши, а потом TWords обнуляй а TStart ставь на след. символ
chander
0 / 0 / 0
Регистрация: 07.03.2009
Сообщений: 5
08.03.2009, 17:03  [ТС]     Как можно подсчитать количество слов в предложении? #5
XuTPbIu_MuHTAu, Попробовал твой код, который ты мне дал, выдает ошибку дебагерра: Expression: (unsigned)(c + 1) <=256
Вот код, если не слишком сложно - просмотри, выручи:
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
#include <fstream>
#include <iostream>
#include <string.h>
using namespace std;
int main ()
{
  const int len=271; //Задание размера строки
  char str[len-1]; 
  int i=0,flag=0,counter=0;
  ifstream in;
  in.open("laba.txt");//открытие файла
  if (in.fail()) //Проверка на открытие файла
        {
           cout << "Input file opening failed!";
           exit(1);
        }
    in >> str[len-1];
  in.close();//Закрываем поток
  in.open("laba.txt");//Открываем поток
  while (in.get(str[len-1]))
  {
      cout << str[len-1];
  }
 for(int i=0;i<strlen(str);i++) 
    {
     if( isalpha(str[i]) && !flag ) 
     { 
           flag=1;
           counter++;
     }
     if( isspace(str[i]) ) flag=0;
   };
  in.close();
  cout << counter;
  system("PAUSE");
  return 0;
}
Добавлено через 18 минут 45 секунд
Ошибка заключается именно в этом кусочке, т.к. если убераю - компилируется.
C++
1
2
3
4
5
6
7
8
9
 for(int i=0;i<strlen(str);i++) 
    {
     if( isalpha(str[i]) && !flag ) 
     { 
           flag=1;
           counter++;
     }
     if( isspace(str[i]) ) flag=0;
   };
Написал вот так:
C++
1
2
3
4
5
6
7
8
9
 while(in.get(str[len-1]))
    {
         if(isalpha(str[len-1]) && !flag )  
        {
            flag=1;
            counter++;
        }
        if(str[i]==' ') flag=0;
    }
Почему-то не считает - всегда 0, хоть ошибка и пропала.

P.S. Разобрался, если кому интересно, то необходимо вместо if писать while, и в этом же цилке писать и вывод теста, и подсчет слов.

Добавлено через 20 минут 1 секунду
XuTPbIu_MuHTAu, Ну в теории все легко, верно? А какие символы необходимо сделать флажками начала предложения?
Yandex
Объявления
08.03.2009, 17:03     Как можно подсчитать количество слов в предложении?
Ответ Создать тему
Опции темы

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