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

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

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

String. Расположение слов в обратном порядке - C++

09.08.2016, 14:36. Просмотров 459. Ответов 10
Метки нет (Все метки)

Доброго времени суток. У меня снова вопрос касательно строк.
Дана вот такая задача:

{deleted}
 Комментарий модератора 
П.5.18.Правил
Запрещено размещать задания и решения в виде картинок и других файлов с их текстом.
П.5.19.Правил
Запрещено создавать темы в виде ссылок на задания или коды программ, расположенные на других сайтах.


Результат выполнения программы должен быть таким:
in: Пример входных данных в программу
out: программу в данных входных Пример

или же для решения этой задачи нужен такой цикл:
C++
1
2
3
4
for (int i(str.size()-1); i>=0; i--)
{
    cout<<str[i];
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.08.2016, 14:36
Я подобрал для вас темы с готовыми решениями и ответами на вопрос String. Расположение слов в обратном порядке (C++):

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

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

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

Вывод слов из предложения в обратном порядке - C++
Есть некоторое предложение в файле, оно записывается в массив, показывается на экране, а затем нужно вывести слова в обратном порядке, не...

Вывести последовательность слов в обратном порядке. - C++
8.3.1. Помогите, пожалуйста, решить задачу в С++. Дана строка. Группы символов, разделённые пробелами (одним или несколькими) и...

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

10
rikimaru2013
C++ Game Dev
2471 / 1140 / 241
Регистрация: 30.11.2013
Сообщений: 3,709
09.08.2016, 14:44 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <string>
#include <iostream>
using namespace std;
 
int main()
{
    const std::string str = "Privet kak dela";
 
    std::string revert = str;
    std::reverse( std::begin( revert ), std::end( revert ) );
 
    cout << str << endl;
    cout << revert << endl;
}
1
Peoples
1245 / 750 / 464
Регистрация: 06.02.2016
Сообщений: 2,029
Записей в блоге: 14
Завершенные тесты: 4
09.08.2016, 14:58 #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
rikimaru2013, это будет просто вывод букв в обратном порядки, а не последовательности слов

Добавлено через 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
#include<iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <fstream>
using namespace std;
int main() {
    string s;
    vector<string>val;
    getline(cin,s);
    ofstream ff;
    ff.open("df.txt");   // велосипед 
    ff<<s;
    ff.close();
    ifstream fd;
    fd.open("df.txt"); 
    while(!fd.eof()) {
        getline(fd,s,' ');
        val.push_back(s);
    }
    fd.close();
    reverse(val.begin(),val.end());
    for(vector<string>::iterator iter=val.begin(); iter!=val.end(); iter++) {
        cout<<*iter<<" ";
    }
    return 0;
}
1
Nigmatulin
0 / 0 / 0
Регистрация: 19.03.2016
Сообщений: 18
09.08.2016, 15:07  [ТС] #4
Peoples, спасибо вам за помощь) А есть ли более простой вариант алгоритма ? А то такой пока для меня слишком уж сложный ))
rikimaru2013, мой цикл тоже работает по такому же принципу, тоже просто выводит буквы в обратном порядке )
0
rikimaru2013
C++ Game Dev
2471 / 1140 / 241
Регистрация: 30.11.2013
Сообщений: 3,709
09.08.2016, 15:07 #5
Peoples, где слова последовательность и слово у ТСа то?
0
Peoples
1245 / 750 / 464
Регистрация: 06.02.2016
Сообщений: 2,029
Записей в блоге: 14
Завершенные тесты: 4
09.08.2016, 15:08 #6
Цитата Сообщение от Nigmatulin Посмотреть сообщение
n: Пример входных данных в программу
out: программу в данных входных Пример
Пример есть
0
Nigmatulin
0 / 0 / 0
Регистрация: 19.03.2016
Сообщений: 18
09.08.2016, 15:14  [ТС] #7
Peoples, сама задача звучит так: Дана строка, состоящая из русских слов, разделенных пробелами. Вывести строку, содержащую эти же слова, , но расположенные в обратном порядке.
Я думаю, ваше решение верное, но слишком сложное пока для меня )
0
rikimaru2013
C++ Game Dev
2471 / 1140 / 241
Регистрация: 30.11.2013
Сообщений: 3,709
09.08.2016, 15:14 #8
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
А нашёл

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
#include <string>
#include <sstream>
#include <iostream>
#include <vector>
using namespace std;
 
vector<string> split( const string &s, char delim)
{
    vector<string> result;
    stringstream ss( s );
    string item;
    while( getline( ss, item, delim ) )
        result.push_back( item );
    return result;
}
 
int main()
{
    const char delim = ' ';
    const std::string str = "Privet kak dela";
    auto words = split( str, delim );
 
    std::reverse( std::begin( words ), std::end( words ) );
 
    for( auto& word : words )
        cout << word << delim;
}
2
Nigmatulin
0 / 0 / 0
Регистрация: 19.03.2016
Сообщений: 18
09.08.2016, 16:16  [ТС] #9
Можно ли получить такой же результат, но без векторов ?

Добавлено через 55 минут
Вопрос, могу ли я строку выводить частями. Например дана строка из 20 элементов.

Добавлено через 23 секунды
Вопрос, могу ли я строку выводить частями. Например дана строка из 20 элементов.
сначала, например, вывести с 15 по 20 элемент, потом с 5 по 10 и тд ?
0
Peoples
1245 / 750 / 464
Регистрация: 06.02.2016
Сообщений: 2,029
Записей в блоге: 14
Завершенные тесты: 4
09.08.2016, 16:25 #10
Nigmatulin,
C++
1
2
3
4
5
6
7
8
using namespace std;
int main(){
string s;
getline(cin,s); // Да, такое вполне возможно!
string s1=s.substr(4,12);
cout<<s1; // такое вполне
    return 0;
}
1
Nigmatulin
0 / 0 / 0
Регистрация: 19.03.2016
Сообщений: 18
09.08.2016, 16:27  [ТС] #11
Peoples, спасибо огромное. Очень помогли )
0
09.08.2016, 16:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.08.2016, 16:27
Привет! Вот еще темы с ответами:

Вывод последовательности слов предложения в обратном порядке - C++
Суть задания - вывести на экран последовательность слов в предложении в обратном порядке. К примеру: вместо &quot;Good day&quot; вывести &quot;day Good&quot;....

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

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

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


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

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

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