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

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

Войти
Регистрация
Восстановить пароль
 
NaikoN
2 / 2 / 0
Регистрация: 01.05.2013
Сообщений: 109
#1

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

22.05.2013, 20:45. Просмотров 627. Ответов 12
Метки нет (Все метки)

Есть текст, например:
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;
}
По вертикали у меня получилось инвентировать, подскажите как инвентировать по горизонтале???
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.05.2013, 20:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Инвертирование текста (C++):

инвертирование - C++
Подскажите как инвертировать шестнадцатеричное число , но не всё , а первые 8-мь разрядов? Например х=df17?

Инвертирование строки - C++
вот попробовал строку инвертировать, она инвертируется,но там еще мусор всякий,скажите как его убрать? #include &lt;iostream&gt; #include...

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

Инвертирование слов в строке - C++
напишите пожалуйста программу которые выводить буквы наоборот например я написал super computer a а она выводить retupmoc repus или repus...

Инвертирование и циклический сдвиг - C++
Задание: Если содержание принятого кода может быть представлено в виде 2 в степени n, то выполнить операцию инвертирования значимых бит с...

Инвертирование и циклический сдвиг - C++
Если содержание принятого кода может быть представлено в виде 2 в степени n, то выполнить операцию инвертирования значимых бит с парными...

12
Croessmah
Ушел
Эксперт CЭксперт С++
13557 / 7707 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
22.05.2013, 21:34 #2
реверс для каждой строки
0
NaikoN
2 / 2 / 0
Регистрация: 01.05.2013
Сообщений: 109
22.05.2013, 23:25  [ТС] #3
Croessmah, как выполнить реверс для каждой строки?
0
BumerangSP
4287 / 1409 / 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);
0
NaikoN
2 / 2 / 0
Регистрация: 01.05.2013
Сообщений: 109
23.05.2013, 09:39  [ТС] #5
BumerangSP, Спасибо, но я честно говоря не понял как приминит Ваш код. Можете на моем примере сказать, куда и что мне нужно дописать??
0
gray_fox
What a waste!
1522 / 1227 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 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; 
}
1
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. библиотеки подключил.
0
gray_fox
What a waste!
1522 / 1227 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
23.05.2013, 12:15 #8
NaikoN, странно.
http://ideone.com/SlLJB5

Добавлено через 2 минуты
Описка, может - v.begin() вместо v.rbegin() - что-нибудь в этом духе...
0
NaikoN
2 / 2 / 0
Регистрация: 01.05.2013
Сообщений: 109
23.05.2013, 12:43  [ТС] #9
gray_fox, MinGW выдавал ошибку, запустил в NetBeans IDE, все скомпилировалось без ошибок. Странно!!!!! Правда я не понимаю, что происходит внутри Вашего кода, но он работает, нету конструкции попроще? Но все равно большое человеческое спасибо.
0
gray_fox
What a waste!
1522 / 1227 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 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> будут не нужны
0
NaikoN
2 / 2 / 0
Регистрация: 01.05.2013
Сообщений: 109
23.05.2013, 13:51  [ТС] #11
gray_fox, Спасибо, так намного понятнее
0
BumerangSP
4287 / 1409 / 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';
}
1
NaikoN
2 / 2 / 0
Регистрация: 01.05.2013
Сообщений: 109
23.05.2013, 20:48  [ТС] #13
BumerangSP, спасибо
0
23.05.2013, 20:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.05.2013, 20:48
Привет! Вот еще темы с ответами:

Инвертирование группы бит. - C++
Помогите с программой, пожалуйста. Дана переменная типа long. Написать функцию, которая инвертирует группу из N разрядов переменной,...

Инвертирование строк в программе. - C++
Внемлю вашей помощи, форумчане. Необходимо: &quot;7. Открыть файл, имя которого задается с клавиатуры. Создать новый файл, в который...

Инвертирование регистра символов - C++
char str; cin.getline(str,n); for(int i=0;i&lt;strlen(str);i++){ if(islower(str)){ str=toupper(str); ...

Инвертирование содержимого файла - C++
Здравствуйте! Скажите как модно реализовать инвертирование содержимого файла! Причем нужно инвертировать не по одному символу, а целыми...


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

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

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