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

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

Войти
Регистрация
Восстановить пароль
 
Lotus34
5 / 6 / 1
Регистрация: 26.10.2012
Сообщений: 124
#1

Предложения в строках - C++

10.01.2013, 22:34. Просмотров 454. Ответов 4
Метки нет (Все метки)

Просидел 2 часа и не смог догнать, как реализовать задачу.Решил обратиться к умеющим за помощью.
Задача:
Написать программу, которая считывает три предложения и выводит их в обратном порядке.

Я так понял,что бы её решать надо найти все знаки завершения, выделить предложения по отдельности в отдельные строки, а потом вывести строки в обратном порядке,но я не могу понять как это реализовать в коде.
Прошу , натолкните на истину.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2013, 22:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Предложения в строках (C++):

Дано два предложения (Распечатать слова из первого предложения, который начинаются на первую букву последнего слова второго предложения) - C++
Дано два предложения. Распечатать: - слова из первого предложения, который начинаются на первую букву последнего слова второго...

Дан целый массив максимальной размерности 20*20. Провести сортировку по возрастанию в нечетных строках массива и по убыванию в четных строках. - C++
Дан целый массив максимальной размерности 20*20. Провести сортировку по возрастанию в нечетных строках массива и по убыванию в четных...

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

Даны два предложения. Найти самое короткое из слов первого предложения,которого нет во втором предложений? - C++
Даны два предложения. Найти самое короткое из слов первого предложения,которого нет во втором предложений?

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Поночка
4 / 4 / 0
Регистрация: 04.10.2009
Сообщений: 22
10.01.2013, 23:18 #2
Если совсем по-простому:
Заводишь массив(или лучше вектор) строк, в котором будешь хранить предложения.
Заводишь переменную, в которой хранишь номер обрабатываемого предложения
Идешь по входной строке. если текущий символ-не символ окончания предложения, то копируешь символ в текущее предложение. Если предложение кончилось, то увеличиваешь индекс. Как кончится строка, то ты получишь все свои предложения.
а для вывода- идешь по массиву(вектору) в обратном порядке. счетчик не с 0 до N-1, а с N-1 до 0
0
!Андрей!
6 / 6 / 0
Регистрация: 31.01.2012
Сообщений: 134
10.01.2013, 23:23 #3
Lotus34, писал на скорую руку, но думаю что основы понятны, при желании можно менять как нужно.
Сделано конечно глупо, но работает.

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
# include <iostream>
using namespace std;
# include <string>
char text[] = "a. bbb. 444. 333.\0";
 
string strings[3];
void copyToString(int num, int st, int nd)
{
    for(int i = st; i < nd; i++)
        strings[num]+=text[i];
}
 
int main()
{
    struct startAndEnd{int start; int end;};
    startAndEnd lines[3];
    
    cout << text << endl;
    int i = 0;
    for(int j = 0; j < 3; j++)
    {
        while(text[i] == ' ') i++;
 
        lines[j].start = i;
        for( ;text[i] != '\0'; i++)
        {
                lines[j].end = i;
                if(text[i] == '.') break;
        }
        i++;
    }
 
    for(int i = 0; i < 3; i++)
        copyToString(i, lines[i].start, lines[i].end);
 
    for(int i = 3; i >= 0; i--)
        cout << strings[i] << endl;
 
    system("pause");
    return 0;
}
0
Lotus34
5 / 6 / 1
Регистрация: 26.10.2012
Сообщений: 124
11.01.2013, 11:20  [ТС] #4
Цитата Сообщение от !Андрей! Посмотреть сообщение
Lotus34, писал на скорую руку, но думаю что основы понятны, при желании можно менять как нужно.
Сделано конечно глупо, но работает.

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
# include <iostream>
using namespace std;
# include <string>
char text[] = "a. bbb. 444. 333.\0";
 
string strings[3];
void copyToString(int num, int st, int nd)
{
    for(int i = st; i < nd; i++)
        strings[num]+=text[i];
}
 
int main()
{
    struct startAndEnd{int start; int end;};
    startAndEnd lines[3];
    
    cout << text << endl;
    int i = 0;
    for(int j = 0; j < 3; j++)
    {
        while(text[i] == ' ') i++;
 
        lines[j].start = i;
        for( ;text[i] != '\0'; i++)
        {
                lines[j].end = i;
                if(text[i] == '.') break;
        }
        i++;
    }
 
    for(int i = 0; i < 3; i++)
        copyToString(i, lines[i].start, lines[i].end);
 
    for(int i = 3; i >= 0; i--)
        cout << strings[i] << endl;
 
    system("pause");
    return 0;
}
У меня что то не заработало. И ещё вопрос-можно ли это как то попроще сделать?
0
igorrr37
1647 / 1275 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
11.01.2013, 11:56 #5
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 <stack>
#include <string>
 
int main()
{
    std::stack<std::string> stack;
    char c;
    std::string s, sDelims(".!?");
    do
    {
        do
        {
            std::cin.get(c);
            s += c;
        }
        while(sDelims.find(c) == std::string::npos);
        stack.push(s);
        s.clear();
    }
    while(stack.size() != 3);
    while(!stack.empty())
    {
        std::cout << stack.top() << "\n\n";
        stack.pop();
    }
    return 0;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.01.2013, 11:56
Привет! Вот еще темы с ответами:

Даны два предложения. Найти самое короткое из слов первого предложения, которого нет во втором предложении - C++
Здравствуйте. Есть задача (написана в теме), есть решение: #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;sstream&gt; ...

Разбить текст на предложения, а предложения - на слова - C++
Вот само задание. С помощью текстового редактора создать файл, содержащий текст, длина которого не превышает 1000 символов (длина строки...

Элементы, расположеные на главной диагонали, в первых 3 строках выше диагонали и в последних 2 строках ниже диагонали переместить в одномерный массив - C++
Нужно элементы расположены на главной диагонали, в первых 3 строках выше диагонали и в последних 2 строках ниже диагонали переместить в...

о строках - C++
вопрос по поводу строк. я хочу в cout выводить русские символы и какие нибудь строки на русском. например string a; ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
11.01.2013, 11:56
Ответ Создать тему
Опции темы

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