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

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

Войти
Регистрация
Восстановить пароль
 
FrankyMO
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 90
#1

Вывести последовательность слов в обратном порядке. - C++

17.01.2014, 00:20. Просмотров 520. Ответов 7
Метки нет (Все метки)

8.3.1.

Помогите, пожалуйста, решить задачу в С++.

Дана строка. Группы символов, разделённые пробелами (одним или несколькими) и не содержащие пробелов внутри себя, будем называть словами. Вывести последовательность слов в обратном порядке.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.01.2014, 00:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывести последовательность слов в обратном порядке. (C++):

Вывести последовательность слов в обратном порядке - C++
Розробити алгоритм і програму для виводу на екран дисплея введеної послідовність слів в зворотному порядку. #include <iostream> ...

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

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

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

Рекурсия: вывести данную последовательность в обратном порядке - C++
Дано натуральное число N и последовательность N элементов. Вы должны вывести данную последовательность в обратном порядке. Ввод ...

Вывести на экран последовательность целых чисел в обратном порядке - C++
Помогите) Задание: Вывести на экран : целые числа 10, 12, 14, ... , 60 в обратном порядкев столбик))( в С ++ для начинающих, напишите...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
cooller
565 / 533 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
17.01.2014, 01:57 #2
FrankyMO,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include"stdafx.h"
#include <iostream>
#include <string>
#include<vector>
#include<sstream>
 
int main()
{
    std::string str;
    std::cout<<"Enter of the string:";
    std::getline(std::cin,str);
    std::stringstream ss(str);
    std::vector <std::string> vec;
    for(std::string word;ss>>word;)
        vec.push_back(word);
    std::reverse(vec.begin(),vec.end());
    std::cout<<"New string:";
    for(std::vector<std::string>::iterator it = vec.begin();it!=vec.end();it++)
        std::cout<<*it<<" ";   
 
    std::system("pause");
    return 0;
}
2
Ev[G]eN
Эксперт С++
5097 / 1535 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
17.01.2014, 02:01 #3
cooller_94, не проще ли?
C++
1
2
std::cout << "New string:";
std::copy(vec.crbegin(), vec.crend(), std::ostream_iterator <std::string> (std::cout, " "));
1
cooller
565 / 533 / 120
Регистрация: 25.12.2013
Сообщений: 1,456
17.01.2014, 02:05 #4
Ev[G]eN, Проще)
0
Croessmah
Эксперт CЭксперт С++
13228 / 7500 / 845
Регистрация: 27.09.2012
Сообщений: 18,419
Записей в блоге: 3
Завершенные тесты: 1
17.01.2014, 02:23 #5
ну и через std::stack
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <string>
#include <stack>
#include <sstream>
 
int main()
{
    std::string str;
    std::cout<<"Enter of the string:";
    std::getline(std::cin,str);
    std::stringstream ss(str);
    std::stack <std::string> st;
    for(std::string word;ss>>word;st.push(word))
       ;
    std::cout<<"New string:";
    for(; !st.empty() ; st.pop ( ) )
        std::cout<<st.top()<<" ";
}
0
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.01.2014, 03:42 #6
Ну, и без STL:
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
#include <iostream>
#include <cstring>
using namespace std;
 
int main()
{
    setlocale(0, "");
    
    char* str = "  Вывод слов   в обратном    порядке   "; 
    char* end = str + strlen(str) - 1; 
    char* cur = end;
    
    while (cur >= str)
    {
        while (*cur == ' ')
            --cur;
        end = cur;
        
        while (*cur != ' ' && cur >= str) 
            --cur;
        if (cur < str && *(cur + 1) == ' ') break;    
        
        char* temp = cur;
        
        cur++;
        for ( ; cur <= end; ++cur)
            cout << *cur;
        cout << ' ';
        
        cur = temp;
    }
    cin.get();
    return 0;
}
1
Croessmah
Эксперт CЭксперт С++
13228 / 7500 / 845
Регистрация: 27.09.2012
Сообщений: 18,419
Записей в блоге: 3
Завершенные тесты: 1
17.01.2014, 03:53 #7
Рекурсия:
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
#include <iostream>
#include <string>
#include <sstream>
 
 
 
void bar ( std::stringstream & ss ) {
    std::string word ;
    if ( ! ( ss >> word ) )
        return ;
    bar ( ss ) ;
    std::cout << word << " " ;
}
 
 
void foo ( const std::string & str ) {
    std::stringstream ss ( str ) ;
    bar ( ss ) ;
    std::cout << std::endl ;
}
 
 
int main()
{
    std::string str;
    std::cout<<"Enter of the string:";
    std::getline(std::cin,str);
    foo ( str ) ;
}
1
alsav22
5420 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.01.2014, 05:46 #8
Рекурсия (без STL):
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
#include <stdio.h>
#include <locale>
#include <cstring>
 
const int N = 50;
 
void f(char* str)
{
    static char* end = str + strlen(str) - 1;
    char word[N];
    
    while (*str == ' ' && str <= end) ++str;
    if (str > end)
        return;
    
    sscanf(str, "%s", word);
    
    str += strlen(word);
    f(str);
    
    printf("%s ", word);
}
 
int main()
{
    setlocale(0, "");
    
    char* str = "  Вывод слов  в обратном    порядке  ";
    f(str);
    
    getchar();
    return 0;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.01.2014, 05:46
Привет! Вот еще темы с ответами:

Дана последовательность, содержащая 30 слов. Вывести эти слова в алфавитном порядке - C++
Дана последовательность, содержащая 30 слов. Вывести эти слова в алфавитном порядке. Реализовать, используя указатели. На языке С и...

вывести слова - анаграммы из словаря, состоящего из пар слов(при чтении в обратном порядке образуется другое слово) - C++
Ребят, помогите пожалуйста написать прогу на С++=(в задании не было сказано что бы считывало с файла, поэтому, можно все, прямо в проге...

Вывод слов в обратном порядке - C++
Всем привет. Мне нужно вывести слова в обратном порядке. У меня есть строка &quot;cannot load data&quot;. нужно сделать так, что бы выводило &quot;data...

Вывод слов из текста в обратном порядке - C++
Здраствуйте. Нужна помощь. Дали задание: есть текстовый файл, из него нужно вывести все слова в обратном порядке, причем за минимальное...


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

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

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