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

reverse string'a - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 61, средняя оценка - 4.95
69Seph
0 / 0 / 0
Регистрация: 02.12.2011
Сообщений: 34
07.12.2011, 16:44     reverse string'a #1
Помогите с задачей. Нужно реверсировать первый элемент со вторым, третий с четвертым и т.д
что у меня не так?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <algorithm>
#include <string>
 
using namespace std;
 
int main(){
 
    string str;
    int n;
    cin>>n;
    for(int i=0;i<n;i++){
        cin >> str[i];  }
    
    for(int i=1;i<n;i+2)
    {for(int j=0;j<n;j+2)
    reverse(str.begin()+i,str.begin()+j);   
    cout << str[i] << endl;}
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
07.12.2011, 18:06     reverse string'a #21
69Seph, вообще допустмо использовать char[] вместо string?

Добавлено через 59 секунд
69Seph, мне не понятно на кой 5 вводить?Оно точно нужно?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
69Seph
0 / 0 / 0
Регистрация: 02.12.2011
Сообщений: 34
07.12.2011, 18:08  [ТС]     reverse string'a #22
да любым способом, хоть интовым массивом

Добавлено через 1 минуту
да, нужно n вводить, чтобы ввести n элементов
-=ЮрА=-
Заблокирован
Автор FAQ
07.12.2011, 18:12     reverse string'a #23
Цитата Сообщение от 69Seph Посмотреть сообщение
чтобы ввести n элементов
- в строке
12 23 53 232 33 - не 5 элементов!Думается 5 - это число пробелов. К тому же пробел - это такой же элемент строки как 2-ка или 3-йка, вам пробелы надо менять или нужно менять числа внутри блоков между пробелами???
Вот код отвечающий тому что вы привели
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>
using namespace std;
 
int main()
{
    int i, n;cin>>n;
    string str;char ch;
    for(i = 0; i < n;)
    {
        if((ch = getchar()) == ' ')
            i++;
        if(ch != '\n')
            str += ch;
    }
 
    cout<<"Stages of swaping :\n";
    for(i = 0; i < str.length() - 1; i += 2)
    {
        //Обмен без буффера
        str[i] += str[i + 1];
        str[i + 1] = str[i] - str[i + 1];
        str[i]     = str[i] - str[i + 1];
        cout<<str.c_str()<<endl;
    }
    cout<<"String after swap : "<<str.c_str()<<endl;
    system("pause");
    return 0;
}
Миниатюры
reverse string'a  
-=ЮрА=-
Заблокирован
Автор FAQ
07.12.2011, 18:13     reverse string'a #24
В моём вводе после 33 идёт ещё пробел - в сумме будет 5-ть пробелов в строке
69Seph
0 / 0 / 0
Регистрация: 02.12.2011
Сообщений: 34
07.12.2011, 18:13  [ТС]     reverse string'a #25
только числа
-=ЮрА=-
Заблокирован
Автор FAQ
07.12.2011, 18:15     reverse string'a #26
Вот замена только в блоках
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
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
    int i, n;cin>>n;
    string str;char ch;
    for(i = 0; i < n;)
    {
        if((ch = getchar()) == ' ')
            i++;
        if(ch != '\n')
            str += ch;
    }
 
    cout<<"Stages of swaping :\n";
    for(i = 0; i < str.length() - 1; i += 2)
    {
        //Обмен без буффера
        while(str[i] == ' ')
            i++;
        str[i] += str[i + 1];
        str[i + 1] = str[i] - str[i + 1];
        str[i]     = str[i] - str[i + 1];
        cout<<str.c_str()<<endl;
    }
    cout<<"String after swap : "<<str.c_str()<<endl;
    system("pause");
    return 0;
}
Миниатюры
reverse string'a  
69Seph
0 / 0 / 0
Регистрация: 02.12.2011
Сообщений: 34
07.12.2011, 18:16  [ТС]     reverse string'a #27
вот 2 примера с задания
1 3
1 2 3 2 1 3

2 8
165 163 160 160 157 157 155 154 163 165 160 160 157 157 154 155
-=ЮрА=-
Заблокирован
Автор FAQ
07.12.2011, 18:23     reverse string'a #28
69Seph, мне не понятна логика поэтому так долго, что эначит
1 3
1 2 3 2 1 3
что есть 1 3 либо это 13 вторая строка - это наш ввод?
69Seph
0 / 0 / 0
Регистрация: 02.12.2011
Сообщений: 34
07.12.2011, 18:27  [ТС]     reverse string'a #29
ой простите
input
3
1 2 3 output 2 1 3
input
8
165 163 160 160 157 157 155 154
output
163 165 160 160 157 157 154 155
-=ЮрА=-
Заблокирован
Автор FAQ
07.12.2011, 18:46     reverse string'a #30
69Seph, я понял задание, но вы так запутанно суть изложили что только сейчас въехал. Всё уже пишу норм алгоритм подождите...

Добавлено через 14 минут
Коряво вышло, но работает, после последней цифры перед Enter обязательно пробел
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
35
36
37
38
39
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
 
int main()
{
    char ch;
    int i, n;cin>>n;
    string buf, str;
    for(i = 0; i < n;)
    {
        if((ch = getchar()) == ' ')
            i++;
        if(ch != '\n')
            str += ch;
    }
    stringstream ss;
    ss.str(str);
    i = 0;
    int * mass = new int[n];
    while(ss>>buf)
    {
        mass[i] = atoi(buf.c_str());
        i++;
    }
    cout<<"String after swap : \n"; 
    for(i = 0; i < n - 1; i += 2)
    {
        mass[i] += mass[i + 1];
        mass[i + 1] = mass[i] - mass[i + 1];
        mass[i]     = mass[i] - mass[i + 1];
        cout<<mass[i]<<" "<<mass[i + 1]<<" ";
    }
    cout<<mass[n - 1]<<endl;
    delete [] mass;
    system("pause");
    return 0;
}
3
1 2 3
String after swap :
2 1 3
Для продолжения нажмите любую клавишу . . .
69Seph
0 / 0 / 0
Регистрация: 02.12.2011
Сообщений: 34
07.12.2011, 19:15  [ТС]     reverse string'a #31
спасиба
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
08.12.2011, 01:31     reverse string'a #32
да, Jupiter, можно, но свопом как-то легче, да и уместней в данной проблеме
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.12.2011, 12:11     reverse string'a
Еще ссылки по теме:

C++ Reverse
C++ Reverse для части массива
C++ Какое одинаковое значение можно вернуть из функций <string> f () и vector < <string> > f()?

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

Или воспользуйтесь поиском по форуму:
svv1412
1 / 1 / 0
Регистрация: 05.12.2011
Сообщений: 3
08.12.2011, 12:11     reverse string'a #33
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <string>
using namespace std;
int main()
{
 string n;
 int i;
    cin>>n;
    for(i=n.length()-1;i>=0;i--)
    {
    cout<<n[i];
    }
    system("pause");
    return 0;
    }
Yandex
Объявления
08.12.2011, 12:11     reverse string'a
Ответ Создать тему
Опции темы

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