Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.65
chander
0 / 0 / 0
Регистрация: 07.03.2009
Сообщений: 5
#1

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

08.03.2009, 13:45. Просмотров 2924. Ответов 4
Метки нет (Все метки)

Маленький вопросик, как можно подсчитать количество слов в предложении. Я думал воспользоваться в качестве разделителя пробелом, но тогда, если предложение будет содержать одни пробелы, программа будет подсчитывать пробелы как разделители между словами и следовательно количество слов все-таки будет. Развейте дремучесть, очень прошу.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.03.2009, 13:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как можно подсчитать количество слов в предложении? (C++):

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

Отсортировать слова в предложении по алфавиту и подсчитать количество слов - C++
отсортировать слова в предложении по алфавиту и подсчитать количество слов

Подсчитать количество слов, которые встречаются в предложении ровно 1 раз - C++
Очень прошу помочь написать программу: Дано предложение, состоящее из слов, разделенных пробелами. Подсчитать количество слов, которые...

Даны N предложений. Подсчитать количество слов в каждом предложении и вывести на печать - C++
Здравствуйте. Помогите, пожалуйста, в написании алгоритма на C++. >>Даны N предложений. Подсчитать количество слов в каждом...

Подсчитать количество слов в предложении (слово – это набор символов, разделённых пробелами) - C++
Подсчитать количество слов в предложении (слово – это набор символов, разделённых пробелами).

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

4
XuTPbIu_MuHTAu
Эксперт С++
2226 / 741 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
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;
};
0
chander
0 / 0 / 0
Регистрация: 07.03.2009
Сообщений: 5
08.03.2009, 15:46  [ТС] #3
XuTPbIu_MuHTAu, Спасибо большое, понял, а теперь окончательный вопрос: как по заданному количеству слов вывести предложение из текста? Ведь для того, чтобы его вывести нужно задать начальную точку вывода и конечную, возможно ли это? Заранее спасибо.
0
XuTPbIu_MuHTAu
Эксперт С++
2226 / 741 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
08.03.2009, 15:53 #4
Тоже сохраняй значения во временных переменных.Скажем,
TStart - тут храни начало текущего предложения
TWords - тут кол-во слов в текущем предложении.
Если встречаешь точку(!?), проверяй,подходит ли кол-во слов к условию,если да - вызывай функцию печати предложения,которую предварительно напиши, а потом TWords обнуляй а TStart ставь на след. символ
0
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, Ну в теории все легко, верно? А какие символы необходимо сделать флажками начала предложения?
0
08.03.2009, 17:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.03.2009, 17:03
Привет! Вот еще темы с ответами:

Подсчитать сколько слов в предложении - C++
1) вводится текст. подсчитать сколько слов в предложении. предложении заканчиваются '.' '!' '?'... в предложении могут быть ',' ...

Вводится предложение. Подсчитать количество слов и подсчитать количество букв в самом длинном слове - C++
Неправильно считает количество букв в наибольшем слове. #include &lt;iostream&gt; #include &lt;cstdio&gt; #include &lt;cstring&gt; using...

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

Как подсчитать количество слов в файле - C++
#include &lt;fstream&gt; #include &lt;iostream&gt; #include &lt;stdio.h&gt; using namespace std; int main(int argc, char* argv) { ...


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

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

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