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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
varkl
1 / 1 / 0
Регистрация: 15.04.2013
Сообщений: 19
#1

Напечатать в столбик первые слова всех предложений текста - C++

24.09.2013, 10:05. Просмотров 1633. Ответов 21
Метки нет (Все метки)

Напечатать в столбик первые слова всех предложений текста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.09.2013, 10:05     Напечатать в столбик первые слова всех предложений текста
Посмотрите здесь:
Напечатать в столбик последние слова всех предложений текста C++
Считать текст и напечатать первые слова всех предложений C++
C++ Напечатать последовательно первые буквы всех слов текста (из одного текстового файла в другой)
Вывод в столбик первых слов всех предложений C++
Напечатать слова, которые состоят из первых и последних букв (но не цифр) всех слов текста C++
Напечатать в столбик все аббревиатуры из текста C++
Напечатать те слова, которые встречаются в каждом из двух заданных предложений C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
h_wolf
9 / 9 / 1
Регистрация: 24.01.2013
Сообщений: 212
24.09.2013, 12:45     Напечатать в столбик первые слова всех предложений текста #16

Не по теме:

alsav22, почему?



Добавлено через 9 минут
Удалось свести вот к такому минимуму. Единственная проблема в строке 22 - если ставить только
C++
1
while(str[t]!='.')
то все ок. Но если добавить так как в коде ниже цикл не завершается...

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
#include<iostream>
#include<cstdio>
using namespace std;
const int ArrSize=256;
 
int main()
{
    char str[ArrSize];
    int t=0;
    cout << "Enter string: ";
    gets(str);
    cout << endl << "The first words:" << endl << endl;
 
    while(str[t]!='\0')
    {
        do{
           cout<<str[t];
           t++;
        }while(str[t]!=' ');
        cout<<'\n'; //что бы в столбик было (=
 
        while(str[t]!='.' || str[t]!='!') //проблема тут. Если убрать || то все работает...
            t++;
 
        t++;
    }
 
    return 0;
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.09.2013, 13:00     Напечатать в столбик первые слова всех предложений текста #17

Не по теме:

Цитата Сообщение от h_wolf Посмотреть сообщение
alsav22, почему?
Недостатки нашёл. Например, предложение заканчивается несколькими знаками (!? или ...), или первое слово одно и после него несколько знаков.



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
49
#include <iostream>
#include <string>
#include <sstream>
#include <cctype>
 
using std::cout;
using std::cin;
using std::endl;
using std::string;
using std::stringstream;
 
int main()
{
    setlocale(0, "");
    
    string text = "Дело в том, что первый цикл выводит только самое первое слово в тексте и все,"
                  " а в условии написано: всех предложений текста. "
                  " Поэтому второй цикл выводит остальные первые слова в предложениях."
                  "\nЕдинственное в коде можно было обойтись одной переменно t, можно i заменить на t,"
                  "и начать второй цикл с индекса, который остался после выполнения первого цикла.";
 
    stringstream s(text);
    cout << text << endl << endl;
 
    string word;
    while (s >> word)
    {
        while (ispunct((unsigned char)word[word.size() - 1]))
            word.erase(word.size() - 1);
            
        cout << word << endl;
        
        char ch;
        while (s.get(ch))
        {
            if (ch == '.' || ch == '!' || ch == '?' )
            {
                while (s.get(ch))
                {
                    if (isspace((unsigned char)ch)) break;
                }
                break;
            }
        }
    } 
 
    cin.get();
    return 0;
}
h_wolf
9 / 9 / 1
Регистрация: 24.01.2013
Сообщений: 212
24.09.2013, 13:13     Напечатать в столбик первые слова всех предложений текста #18
Что-то я сегодня туплю. Естественно в моейм варианте надо не || (ИЛИ) а && (И) использовать.

Вот рабочий код:

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<cstdio>
using namespace std;
const int ArrSize=256;
int main()
{
    char str[ArrSize];
    int i,t=0;
    cout << "Enter string: ";
    gets(str);
    cout << endl << "The first words:" << endl << endl;
    while(str[t]!='\0')
    {
        do{
           cout<<str[t];
           t++;
        }while(str[t]!=' ');
        cout<<'\n'; //что бы в столбик было (=
        while(str[t]!='!' && str[t]!='.') //дописать интеречсующие Вас разделители предложений
            t++;
        t++;
    }
    return 0;
}
Drusha
6 / 6 / 0
Регистрация: 16.07.2013
Сообщений: 74
24.09.2013, 13:13     Напечатать в столбик первые слова всех предложений текста #19
alsav22, глядя на Ваш код, я вспомнил как мне в детстве отец говорил "Смотрю в книгу, вижу фигу" Видимо не дорос я еще до такого, буду учить дальше
h_wolf
9 / 9 / 1
Регистрация: 24.01.2013
Сообщений: 212
24.09.2013, 13:20     Напечатать в столбик первые слова всех предложений текста #20
Drusha, ошибочка, думал Вы мне.

Добавлено через 1 минуту
Drusha, просто не все функции нам известны )
Drusha
6 / 6 / 0
Регистрация: 16.07.2013
Сообщений: 74
24.09.2013, 13:31     Напечатать в столбик первые слова всех предложений текста #21
Цитата Сообщение от h_wolf Посмотреть сообщение
Drusha, просто не все функции нам известны )
Москва не сразу строилась
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.09.2013, 13:33     Напечатать в столбик первые слова всех предложений текста
Еще ссылки по теме:
Напечатать те слова, которые встречаются в каждом из двух заданных предложений C++
C++ Напечатать в столбик отдельные слова, и указать для каждого количество повторов в строке
C++ Напечатать слова, которые отличны от последнего слова текста, предварительно удалив из слова последнюю букву
C++ Вывести в алфавитном порядке последние слова всех предложений
Вывести в алфавитном порядке предпоследние слова всех предложений C++

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

Или воспользуйтесь поиском по форуму:
h_wolf
24.09.2013, 13:33     Напечатать в столбик первые слова всех предложений текста
  #22

Не по теме:

Drusha, yep!

Yandex
Объявления
24.09.2013, 13:33     Напечатать в столбик первые слова всех предложений текста
Ответ Создать тему
Опции темы

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