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

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

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

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

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

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

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

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

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

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

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

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

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

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

Подсчитать число слов в предложении, записанном в текстовом файле. Язык C++ - C++
//// программа с файлами оч сложная

Подсчитать количество предлогов в предложении - C++
помогите пожалуйста! Есть предложение в нем надо подсчитать кол-во предлогов! Как это сделать, и что для этого надо почитать

Подсчитать количество запятых в предложении - C++
Мне нужно подсчитать кол-во запятых в предложении (при помощи цикла) и определить , не является ли предложение вопросительным. Должно быть...

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


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
XuTPbIu_MuHTAu
Эксперт С++
2224 / 739 / 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;
};
chander
0 / 0 / 0
Регистрация: 07.03.2009
Сообщений: 5
08.03.2009, 15:46  [ТС]     Как можно подсчитать количество слов в предложении? #3
XuTPbIu_MuHTAu, Спасибо большое, понял, а теперь окончательный вопрос: как по заданному количеству слов вывести предложение из текста? Ведь для того, чтобы его вывести нужно задать начальную точку вывода и конечную, возможно ли это? Заранее спасибо.
XuTPbIu_MuHTAu
Эксперт С++
2224 / 739 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
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     Как можно подсчитать количество слов в предложении?
Ответ Создать тему
Опции темы

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