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

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

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

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

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

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

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

Считать текст и напечатать первые слова всех предложений - C++
Помогите пожалуйстааа!!! не знаю как написать.... Из одного файла нужно считать текст и уже в другой напечатать в столбик первые слова всех...

Напечатать последовательно первые буквы всех слов текста (из одного текстового файла в другой) - C++
Йоу,ребят. Программа должна считывать текст из файла и выводить в другой текстовой файл. А задание,собственно,вот. "Напечатать...

Вывод в столбик первых слов всех предложений - C++
Помогите написать программу для вывода в столбик первых слов всех предложений. Текст должен считывается из текстового документа.

Напечатать слова, которые состоят из первых и последних букв (но не цифр) всех слов текста - C++
вот мои попытки, Напечатать слова, которые состоят из первых и последних букв (но не цифр) всех слов текста #include <iostream> ...

Напечатать в столбик все аббревиатуры из текста - C++
Помогите пожалуйста сделать курсовую. :cry:Нужно Напечатать в столбик все аббревиатуры из текста и сохранить это в текстовый файл.

21
h_wolf
9 / 9 / 1
Регистрация: 24.01.2013
Сообщений: 212
24.09.2013, 11:08 #2
наброски кода есть?
0
Drusha
6 / 6 / 0
Регистрация: 16.07.2013
Сообщений: 74
24.09.2013, 11:14 #3
На красоту кода не претендую, только учусь. Вот собственно что у меня получилось.
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
#include<iostream>
#include<cstdio>
using namespace std;
 
int main()
{
    char str[80];
    int i,t;
    cout << "Enter string: ";
    gets(str);
    cout << endl << "The first words:" << endl << endl;
    for(t=0; str[t]; t++)
    {
        if(str[t]==' ' || str[t]=='.' || str[t]==',' || str[t]=='?' || str[t]=='!' || str[t]==':') break;
        else cout << str[t];
    }
    cout << endl;
    for(i=0; str[i]; i++)
    {
        if(str[i-2]=='.' || str[i-2]=='?' || str[i-2]=='!' && str[i-1]==' ') 
        {
            for(;str[i]!=' ' && str[i]!=0;i++)
            {
                if(str[i]!='.' && str[i]!=',' && str[i]!='?' && str[i]!='!' && str[i]!=':') cout << str[i];
            }
            cout << endl;
        }
        
    }   
    return 0;
}
0
h_wolf
9 / 9 / 1
Регистрация: 24.01.2013
Сообщений: 212
24.09.2013, 11:16 #4
Цитата Сообщение от Drusha Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
for(i=0; str[i]; i++)
* * {
* * * * if(str[i-2]=='.' || str[i-2]=='?' || str[i-2]=='!' && str[i-1]==' ') 
* * * * {
* * * * * * for(;str[i]!=' ' && str[i]!=0;i++)
* * * * * * {
* * * * * * * * if(str[i]!='.' && str[i]!=',' && str[i]!='?' && str[i]!='!' && str[i]!=':') cout << str[i];
* * * * * * }
* * * * * * cout << endl;
* * * * }

А зачем второй цикл? Слово же вроде уже вывели...
0
Drusha
6 / 6 / 0
Регистрация: 16.07.2013
Сообщений: 74
24.09.2013, 11:20 #5
h_wolf , он выводит первые слова в предложении, но кроме самого первого слова в тексте, вот поэтому и пришлось добавить первый цикл, что бы вывести первое слово в тексте, вообщем как получилось.
0
h_wolf
9 / 9 / 1
Регистрация: 24.01.2013
Сообщений: 212
24.09.2013, 11:23 #6
Drusha, проверил в Code::Blocks без второго цикла все работает как надо - выводится только первое слово из строки.
0
Drusha
6 / 6 / 0
Регистрация: 16.07.2013
Сообщений: 74
24.09.2013, 11:31 #7
Цитата Сообщение от h_wolf Посмотреть сообщение
без второго цикла все работает как надо - выводится только первое слово из строки.
Дело в том что первый цикл выводит только самое первое слово в тексте и все, а в условии написано:
Цитата Сообщение от varkl Посмотреть сообщение
всех предложений текста
поэтому второй цикл выводит остальные первые слова в предложениях.
Единственное в коде можно было обойтись одной переменно t, можно i заменить на t, и начать второй цикл с индекса который остался после выполнения первого цикла.
0
h_wolf
9 / 9 / 1
Регистрация: 24.01.2013
Сообщений: 212
24.09.2013, 11:40 #8
А если предложений будет больше двух?
Тогда целесообразнее как-то через while-цикл сделать. Сейчас пытаюсь переписать Ваш код.
0
Drusha
6 / 6 / 0
Регистрация: 16.07.2013
Сообщений: 74
24.09.2013, 11:49 #9
h_wolf , эта программа работать будет хоть сколько угодно предложений, главное в 7 строчке цифру побольше выставить.
Просто я сделал вначале второй цикл, а он выводит первые слова которые идут после символов точка-пробел, вопросительный знак - пробел, восклицательный знак - пробел. Он выводил все первые слова всех предложений кроме первого соответственно. Поэтому я вначале добавил цикл, который мне выводит самое первое слово в массиве и все.
0
h_wolf
9 / 9 / 1
Регистрация: 24.01.2013
Сообщений: 212
24.09.2013, 11:51 #10
Drusha, да, действительно, не посмотрел на условия цикла for. Если доделаю свой вариант тоже здесь положу.
0
Drusha
6 / 6 / 0
Регистрация: 16.07.2013
Сообщений: 74
24.09.2013, 11:58 #11
h_wolf , ничего страшного, я тут свои варианты решения и выставляю для того что бы их критиковали. Т.к. учу с++ сам, то надо что бы кто-то критиковал, что бы я исправлялся.
0
h_wolf
9 / 9 / 1
Регистрация: 24.01.2013
Сообщений: 212
24.09.2013, 12:00 #12
У меня вот так вот получилось:

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
#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')
    {
        if(str[t-1]!='.' || str[t-1]!='!' || str[t-1]!=';' || str[t-1]!='?' || str[t-1]!='!?') //дописать интеречсующие Вас разделители предложений
        {
            while(str[t]!=' '){
                cout<<str[t];
                t++;
            }
            cout<<' ';
 
            while(str[t-1]!='.' || str[t-1]!='!' || str[t-1]!=';' || str[t-1]!='?' || str[t-1]!='!?') //дописать интеречсующие Вас разделители предложений
                t++;
        }
        t++;
    }
 
    return 0;
0
Drusha
6 / 6 / 0
Регистрация: 16.07.2013
Сообщений: 74
24.09.2013, 12:10 #13
h_wolf, что-то не заработала, выводит только первое слово и все.
Цикл while(str[t]!='\0') можете попробовать заменить на while(str[t]), он так же остановиться когда там значения будет \0.
0
h_wolf
9 / 9 / 1
Регистрация: 24.01.2013
Сообщений: 212
24.09.2013, 12:16 #14

Не по теме:

почти получилось свести все к трем циклам while. и будет вообще красота)



Добавлено через 52 секунды
Drusha, У меня все отработало, странно.
Да, знаю, что можно заменить, но мне так нагляднее и симпотичнее. (=
0
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.09.2013, 12:33 #15
Удалил.
0
24.09.2013, 12:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.09.2013, 12:33
Привет! Вот еще темы с ответами:

Напечатать те слова, которые встречаются в каждом из двух заданных предложений - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;locale&gt; using namespace std; int main() { char *tempSlova1 = new...

Напечатать те слова, которые встречаются в каждом из двух заданных предложений - C++
Напечатать те слова, которые встречаются в каждом из двух заданных предложений. Помогите. Зарание спасибо! Погуглил, много тем,но...

Напечатать в столбик отдельные слова, и указать для каждого количество повторов в строке - C++
дана строка символов, которая состоит из отдельных слов, разделенных пробелом. нужно напечатать в столбик отдельные слова и указать для...

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


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

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

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