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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.72
Сергейййййййй
4 / 2 / 0
Регистрация: 12.01.2012
Сообщений: 30
13.01.2012, 17:00     Сделать так что б в строке все слова были напечатаны наоборот #1
Помогите пожайлуста:
Преобразовать строку таким образом, чтобы все слова в ней были напечатаны наоборот (зеркально).
Я сделал так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <string>
#include <iterator>
#include <algorithm>
 
using namespace std;
 
int main(int argc, char * argv[])
{
        string strLine("Tupo Tekst");
        copy(strLine.rbegin(), strLine.rend(), ostream_iterator<char>(cout, ""));
        cout << '\n';
 
        system("pause");
        return 0;
}
 Комментарий модератора 
Используйте теги форматирования кода!


Мне сказали что програма не выполняет поставленой задачи...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2012, 17:00     Сделать так что б в строке все слова были напечатаны наоборот
Посмотрите здесь:

программа переставляет слова в строке наоборот C++
C++ Как сделать так что бы массив выводил наоборот
C++ Как сделать так, чтобы функции были не вложенными?
C++ Преобразовать строку так, чтобы буквы каждого слова были остортированы по возрастанию
C++ сортировка что бы в массиве сначала были все четные а потом все нечетные числа
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vergil111
31 / 31 / 6
Регистрация: 30.11.2010
Сообщений: 81
13.01.2012, 17:11     Сделать так что б в строке все слова были напечатаны наоборот #2
используйте алгоритм reverse()
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <string>
#include <algorithm>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    string x; 
    cin >> x;
    reverse(x.begin(), x.end());
    cout << x << endl;
    return 0;
}
Roof
 Аватар для Roof
154 / 154 / 10
Регистрация: 03.11.2010
Сообщений: 393
13.01.2012, 17:27     Сделать так что б в строке все слова были напечатаны наоборот #3
Предполагаю, что все слова разделены в строке пробелами:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <sstream>
using namespace std;
 
int main() {
    string word, strLine("One Two Three");
    istringstream stream( strLine );
    strLine.clear();
    while ( stream >> word ){
        strLine.append( word.rbegin(), word.rend());
        strLine.append(" ");
    }
    cout << strLine;
    return 0;
}
2 Vergil111 - у Вас переворачивает всю строку, а не слова отдельные.
Vergil111
31 / 31 / 6
Регистрация: 30.11.2010
Сообщений: 81
13.01.2012, 18:47     Сделать так что б в строке все слова были напечатаны наоборот #4
Проглядел, проглядел в задании, каюсь,
Roof=)
Тогда нам помогут лямбда-выражения=)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <iterator>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    vector<string> text((istream_iterator<string>(cin)),
                                     (istream_iterator<string>()));
    for_each(text.begin(), text.end(), [](string& s){ reverse(s.begin(), s.end());});
    copy(text.begin(), text.end(), ostream_iterator<string>(cout, " "));
    cout << endl;
    return 0;
}
окончания ввода строки в консоли Windows Enter, затем на новой строчке Ctrl+z и опять Enter
Сергейййййййй
4 / 2 / 0
Регистрация: 12.01.2012
Сообщений: 30
14.01.2012, 16:43  [ТС]     Сделать так что б в строке все слова были напечатаны наоборот #5
Мне написали что программа всё ещё не выполняет поставленную задачу....
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
14.01.2012, 17:49     Сделать так что б в строке все слова были напечатаны наоборот #6
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 <algorithm>
#include <string>
 
int main()
{
    std::string s;
    std::cout << "input string: ";
    std::getline(std::cin, s);
 
    const std::string delim = " ,.:;!?";
    size_t pos_start = s.find_first_not_of(delim);
    size_t pos_end = s.find_first_of(delim, pos_start);
 
    while((pos_start != std::string::npos))
    {
        if(pos_end == std::string::npos)
        {
            std::reverse(s.begin() + pos_start, s.end());
            break;
        }
 
        std::reverse(s.begin() + pos_start, s.begin() + pos_end);
        pos_start = s.find_first_not_of(delim, pos_end);
        pos_end = s.find_first_of(delim, pos_start);
    }
 
    std::cout << "result: " << s << "\n";
}
Сергейййййййй
4 / 2 / 0
Регистрация: 12.01.2012
Сообщений: 30
18.01.2012, 00:37  [ТС]     Сделать так что б в строке все слова были напечатаны наоборот #7
мне сказали: что программа Всё ещё не выполняет поставленной задачи....
я кажется понял как надо но сам не могу сделать (пример: privet vsem - mesv tevirp), помогите пожайлуста...
MrCold
851 / 749 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
18.01.2012, 11:30     Сделать так что б в строке все слова были напечатаны наоборот #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
 //privet vsem - mesv tevirp
 
// .......... на С++ ..............
 
#include<iostream>
#include <conio.h>
 
using namespace std;
 
int main() {
    int i;
     int index = 11;
     char arr[11] = {'p' ,'r','i' ,'v' ,'e' ,' t',' ','v' ,'s' ,'e' ,'m'};
 
     //     читаем строку 
 
      for( i = 0; i < index; i++)
        cout << arr[i] ;
 
 
    //     читаем строку с конца массива
     cout << "\t";
 
     for( i = (index - 1); i > 0 ; i--)
        cout << arr[i] ;
     _getch();
}
Добавлено через 9 часов 55 минут
Во втором цикле опечатка .Вот так нужно :
C++
1
  for( i = (index-1); i > -1 ; i--)
Roof
 Аватар для Roof
154 / 154 / 10
Регистрация: 03.11.2010
Сообщений: 393
18.01.2012, 13:54     Сделать так что б в строке все слова были напечатаны наоборот #9
я кажется понял как надо но сам не могу сделать (пример: privet vsem - mesv tevirp), помогите пожайлуста...
Переделал чуток пример от Vergil111 из поста #2

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <string>
#include <algorithm>
 
using namespace std;
 
int main() {
    cout << "Введите строку" << endl;
    string x;
    getline( cin, x );
    reverse( x.begin(), x.end() );
    cout << x << endl;
    return 0;
}
Консоль
Введите строку
privet vsem
mesv tevirp
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
18.01.2012, 14:38     Сделать так что б в строке все слова были напечатаны наоборот #10
Цитата Сообщение от Сергейййййййй Посмотреть сообщение
я кажется понял как надо но сам не могу сделать (пример: privet vsem - mesv tevirp), помогите пожайлуста...
Это реверс всей строки, а не слов, в нее входящих. И думать тут особо не нужно.
C++
1
2
3
std::string str;
std::getline(std::cin, str);
std::cout << std::string( str.rbegin(), str.rend() );
Сергейййййййй
4 / 2 / 0
Регистрация: 12.01.2012
Сообщений: 30
18.01.2012, 20:57  [ТС]     Сделать так что б в строке все слова были напечатаны наоборот #11
Цитата Сообщение от Roof Посмотреть сообщение
Переделал чуток пример от Vergil111 из поста #2

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <string>
#include <algorithm>
 
using namespace std;
 
int main() {
    cout << "Введите строку" << endl;
    string x;
    getline( cin, x );
    reverse( x.begin(), x.end() );
    cout << x << endl;
    return 0;
}
Консоль
Введите строку
privet vsem
mesv tevirp

Мне сказали почему порядок слов изменён?? как сделать что б порядок не изменялся?
Roof
 Аватар для Roof
154 / 154 / 10
Регистрация: 03.11.2010
Сообщений: 393
18.01.2012, 21:29     Сделать так что б в строке все слова были напечатаны наоборот #12
2 Сергейййййййй - а ты ведь написал:
Цитата Сообщение от Сергейййййййй Посмотреть сообщение
я кажется понял как надо но сам не могу сделать (пример: privet vsem - mesv tevirp), помогите пожайлуста...
Зачем в пример приводил?
Сформулируй задачу четко и ясно. Приведи пример входных данных и пример выходных данных.
А то не понять чего ты хочешь.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.01.2012, 01:52     Сделать так что б в строке все слова были напечатаны наоборот
Еще ссылки по теме:

Преобразовать строку таким образом, чтобы все слова в ней были напечатаны наоборот C++
Преобразовать строку таким образом, чтобы все символы в ней были напечатаны наоборот C++
C++ Преобразовать строку таким образом, чтобы все слова в ней были напечатаны наоборот

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

Или воспользуйтесь поиском по форуму:
Сергейййййййй
4 / 2 / 0
Регистрация: 12.01.2012
Сообщений: 30
19.01.2012, 01:52  [ТС]     Сделать так что б в строке все слова были напечатаны наоборот #13
извините за предоставленные неудобства с моей стороны,я просто предполагал что пример будит выглядеть так...,но на самом деле он выглядит вот так: (one two three - eno owt eerht).
Yandex
Объявления
19.01.2012, 01:52     Сделать так что б в строке все слова были напечатаны наоборот
Ответ Создать тему
Опции темы

Текущее время: 07:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru