Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.74/120: Рейтинг темы: голосов - 120, средняя оценка - 4.74
1 / 1 / 1
Регистрация: 02.12.2011
Сообщений: 34
1

reverse string'a

07.12.2011, 16:44. Показов 21687. Ответов 32
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите с задачей. Нужно реверсировать первый элемент со вторым, третий с четвертым и т.д
что у меня не так?

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;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.12.2011, 16:44
Ответы с готовыми решениями:

Вырезка части stringa
подскажите как вырезать строку a1@ya.ru до первой запятой в строке str и сохранить ее в str1 на...

Reverse
#include &lt;iostream&gt; #include &lt;string.h&gt; void reverse(char* s, size_t len); int main() { ...

Функция - Reverse(s).
Помогите, нужен пример Функция - Reverse(s). Назначение - изменение порядка символов в строке s на...

С++ фунция -reverse
Всем привет подскажите пожалуста как пользоваться функцией reverse понятным языком я просто уже...

32
Заблокирован
Автор FAQ
07.12.2011, 18:06 21
Author24 — интернет-сервис помощи студентам
69Seph, вообще допустмо использовать char[] вместо string?

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

Добавлено через 1 минуту
да, нужно n вводить, чтобы ввести n элементов
0
Заблокирован
Автор FAQ
07.12.2011, 18:12 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  
0
Заблокирован
Автор FAQ
07.12.2011, 18:13 24
В моём вводе после 33 идёт ещё пробел - в сумме будет 5-ть пробелов в строке
0
1 / 1 / 1
Регистрация: 02.12.2011
Сообщений: 34
07.12.2011, 18:13  [ТС] 25
только числа
0
Заблокирован
Автор FAQ
07.12.2011, 18:15 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  
0
1 / 1 / 1
Регистрация: 02.12.2011
Сообщений: 34
07.12.2011, 18:16  [ТС] 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
0
Заблокирован
Автор FAQ
07.12.2011, 18:23 28
69Seph, мне не понятна логика поэтому так долго, что эначит
1 3
1 2 3 2 1 3
что есть 1 3 либо это 13 вторая строка - это наш ввод?
0
1 / 1 / 1
Регистрация: 02.12.2011
Сообщений: 34
07.12.2011, 18:27  [ТС] 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
0
Заблокирован
Автор FAQ
07.12.2011, 18:46 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
Для продолжения нажмите любую клавишу . . .
0
1 / 1 / 1
Регистрация: 02.12.2011
Сообщений: 34
07.12.2011, 19:15  [ТС] 31
спасиба
0
542 / 447 / 162
Регистрация: 10.12.2009
Сообщений: 1,857
08.12.2011, 01:31 32
да, Jupiter, можно, но свопом как-то легче, да и уместней в данной проблеме
0
1 / 1 / 0
Регистрация: 05.12.2011
Сообщений: 3
08.12.2011, 12:11 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;
    }
0
08.12.2011, 12:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.12.2011, 12:11
Помогаю со студенческими работами здесь

Функция reverse в двумерном массиве
Здравствуйте, как организовать функцию reverse в двумерном массиве, скажем, для 1-ой строки. судя...

Как пользоваться функцией reverse?
Всем привет подскажите пожалуста как пользоваться функцией reverse и приведите примеры

Reverse для части массива
Всем привет! Возник вопрос: как произвести операцию reverse только для части массива? Например, от...

функция reverse(). ошибка несоответствия типов
где-то накосячил с указателями видимо... объясните, пожалуйста, где и почему. суть задания -...


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

Или воспользуйтесь поиском по форуму:
33
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru