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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 61, средняя оценка - 4.95
69Seph
0 / 0 / 0
Регистрация: 02.12.2011
Сообщений: 34
#1

reverse string'a - C++

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

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

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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.12.2011, 16:44     reverse string'a
Посмотрите здесь:

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

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

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

Развернуть участок массива с помощью reverse - C++
Здравствуйте! Нужно использовать функцию &quot;reverse&quot;. Знаю только вариант: reverse(a, a + n) Но это переворачивает весь массив, а мне...

Recursion and pointers. Array in reverse order - C++
Задача: Suppose that intArray is an array of integers, and length specifies the number of elements in intArray. Also, suppose that low...

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

Никак не могу запустить reverse приложение c++ - C++
Нашёл такое решение: www.partow.net/programming/tcpproxy/index.html Скомпиллировал всё хорошо. Если я понял то позволяет из вне...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
07.12.2011, 17:53     reverse string'a #16
Цитата Сообщение от Петррр Посмотреть сообщение
А разве обязательно выполнять метод c_str()?
нет
Цитата Сообщение от 69Seph Посмотреть сообщение
просто этот контестер...очень вредный
1. писать нужно самому
2. не использовать std::string
69Seph
0 / 0 / 0
Регистрация: 02.12.2011
Сообщений: 34
07.12.2011, 17:58  [ТС]     reverse string'a #17
чета не то... посматретие вы правильно задачу поняли?
Write a program that rearranges the neighboring array elements ( 1-th element of the change from 2-nd, 3-rd 4-th, etc.If an odd number of elements, the latter element remains in place).
-=ЮрА=-
Заблокирован
Автор FAQ
07.12.2011, 18:00     reverse string'a #18
Вот последний вариант, всё вводим в строку с пробелами
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
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
    cout<<"Enter n : ";
    int i, n;cin>>n;
    string str;char ch;
    cout<<"Enter string :\n";
    for(i = 0; i < n - 1;)
    {
        if((ch = getchar()) == ' ')
            i++;
        str += ch;
    }
 
    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<<"String after swap : "<<str.c_str()<<endl;
    system("pause");
    return 0;
}
Миниатюры
reverse string'a  
-=ЮрА=-
Заблокирован
Автор FAQ
07.12.2011, 18:02     reverse string'a #19
Цитата Сообщение от Петррр Посмотреть сообщение
А разве обязательно выполнять метод c_str()?
- лично у меня компилятор отказывается выводить std::string метод c_str() вернёт const char *
69Seph
0 / 0 / 0
Регистрация: 02.12.2011
Сообщений: 34
07.12.2011, 18:02  [ТС]     reverse string'a #20
не корректно работает...прочитайте плз задание выше
-=ЮрА=-
Заблокирован
Автор 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.12.2011, 18:46     reverse string'a
Еще ссылки по теме:

функция Reverse которая паспологает строку в обратном положении-никакого результата - C++
//alex.h public: char reverse(char s){ int c,i,j; c=i=j=0; for(i=0,j=strlen(s)-1;i&lt;j;i++,j--){ c=s; s=s; s=c; }

Список(List) как отсортировать по убыванию используя функции reverse(); sort(); ао убыванию - C++
Нужно отсортировать список по убыванию используя функции reverse(); и sort(); если можно фул прогу бо завтыкал тему чёто)))))

String to string *ABCD*(41 42 43 44) -> *«Í*(AB CD) - C++
В общем вопрос в теме. На сях писал последний раз на 2 курсе, сейчас сижу не могу придумать как изящнее придумать решение. Надо для...

Преобразовать латинский текст string в русский текст string - C++
Пишу приложение, которое мне будет отправлять в твиттер нужные сообщения. Встретился со следующей головоломкой (сразу хочу сказать, что...

Отличие string и String - C++
чем отличается String от string ?


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

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
Заблокирован
Автор 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
Для продолжения нажмите любую клавишу . . .
Yandex
Объявления
07.12.2011, 18:46     reverse string'a
Ответ Создать тему
Опции темы

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