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

Инвертирование текста - C++

Восстановить пароль Регистрация
 
NaikoN
2 / 2 / 0
Регистрация: 01.05.2013
Сообщений: 109
22.05.2013, 20:45     Инвертирование текста #1
Есть текст, например:
Beautiful
Explicit
Simple
Complex
Я хочу его инвентировать по вертикале сначало, т. е. должно получится:
Complex
Simple
Explicit
Beautiful
А потом по горизонтале, т. е. должно получится:
xelpmoC
elpmiS
и т. д.
вот мой код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
int main()
{
    ifstream cin("input.txt");
    //ofstream cout("output.txt");
    vector<string> v;
    long long int a,b,i,j;
    string str;
    while(getline(cin,str))
    {
        v.push_back(str);
    }
    for(i=v.size()-1;i>=0;i--)
    {
        reverse(v.end(), v.begin());
        cout<<v[i]<<endl;
    }
    return 0;
}
По вертикали у меня получилось инвентировать, подскажите как инвентировать по горизонтале???
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.05.2013, 20:45     Инвертирование текста
Посмотрите здесь:

C++ Инвертирование строк в программе.
C++ инвертирование
C++ Рекурсивное инвертирование порядка строк в файле
C++ Инвертирование группы бит.
C++ Инвертирование строки
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,917
Записей в блоге: 2
Завершенные тесты: 1
22.05.2013, 21:34     Инвертирование текста #2
реверс для каждой строки
NaikoN
2 / 2 / 0
Регистрация: 01.05.2013
Сообщений: 109
22.05.2013, 23:25  [ТС]     Инвертирование текста #3
Croessmah, как выполнить реверс для каждой строки?
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
23.05.2013, 00:43     Инвертирование текста #4
C++
1
2
3
4
5
6
7
void op(string& str)
{
    reverse(str.begin(), str.end());
}
...
reverse(v.begin(), v.end());
for_each(v.begin(), v.end(), op);
NaikoN
2 / 2 / 0
Регистрация: 01.05.2013
Сообщений: 109
23.05.2013, 09:39  [ТС]     Инвертирование текста #5
BumerangSP, Спасибо, но я честно говоря не понял как приминит Ваш код. Можете на моем примере сказать, куда и что мне нужно дописать??
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
23.05.2013, 10:50     Инвертирование текста #6
Цитата Сообщение от NaikoN Посмотреть сообщение
C++
1
2
3
4
for(i=v.size()-1;i>=0;i--) {
   reverse(v.end(), v.begin());
   cout<<v[i]<<endl; 
}
C++
1
2
3
4
5
6
7
8
9
#include <iterator>
#include <algorithm>
 
// ...
 
for (vector<string>::const_reverse_iterator it = v.rbegin(); it != v.rend(); ++it) {
   reverse_copy(it->begin(), it->end(), ostream_iterator<char>(cout));
   cout << endl; 
}
NaikoN
2 / 2 / 0
Регистрация: 01.05.2013
Сообщений: 109
23.05.2013, 11:56  [ТС]     Инвертирование текста #7
gray_fox, Не работает, выдает ошибку "error: no match for 'operator!=' in 'it != std::vector<_Tp, _Alloc>::rend() [with _Tp = std::string, _Alloc = std::allocator<std::string>]()'".
P.S. библиотеки подключил.
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
23.05.2013, 12:15     Инвертирование текста #8
NaikoN, странно.
http://ideone.com/SlLJB5

Добавлено через 2 минуты
Описка, может - v.begin() вместо v.rbegin() - что-нибудь в этом духе...
NaikoN
2 / 2 / 0
Регистрация: 01.05.2013
Сообщений: 109
23.05.2013, 12:43  [ТС]     Инвертирование текста #9
gray_fox, MinGW выдавал ошибку, запустил в NetBeans IDE, все скомпилировалось без ошибок. Странно!!!!! Правда я не понимаю, что происходит внутри Вашего кода, но он работает, нету конструкции попроще? Но все равно большое человеческое спасибо.
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
23.05.2013, 12:51     Инвертирование текста #10
Цитата Сообщение от NaikoN Посмотреть сообщение
нету конструкции попроще?
Можно конечно не использовать итераторы и алгоритмы, я так уже привык просто) Попробуй
C++
1
2
3
4
5
6
for (std::size_t i = v.size(); i-- != 0; ) {
   for (std::size_t j = v[i].length(); j-- != 0; ) {
      cout << v[i][j];
   }
   cout << endl;
}
Тогда <iterator> и <algorithm> будут не нужны
NaikoN
2 / 2 / 0
Регистрация: 01.05.2013
Сообщений: 109
23.05.2013, 13:51  [ТС]     Инвертирование текста #11
gray_fox, Спасибо, так намного понятнее
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
23.05.2013, 16:26     Инвертирование текста #12
NaikoN, вот на Вашем примере:
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 <fstream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
 
void op(string& str)
{
    reverse(str.begin(), str.end());
}
 
int main()
{
    ifstream in("c:\\data.txt");
    vector<string> v;
    string str;
    while(!in.eof())
    {
        getline(in,str);
        v.push_back(str);
    }
    reverse(v.begin(), v.end());
    for_each(v.begin(), v.end(), op);
    for (int i=0; i<4; ++i)
        cout << v[i] <<'\n';
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.05.2013, 20:48     Инвертирование текста
Еще ссылки по теме:

C++ Инвертирование содержимого файла
C++ Инвертирование строк
Инвертирование регистра символов C++

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

Или воспользуйтесь поиском по форуму:
NaikoN
2 / 2 / 0
Регистрация: 01.05.2013
Сообщений: 109
23.05.2013, 20:48  [ТС]     Инвертирование текста #13
BumerangSP, спасибо
Yandex
Объявления
23.05.2013, 20:48     Инвертирование текста
Ответ Создать тему
Опции темы

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