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

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

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

reverse string'a - C++

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

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 только для части массива? Например, от второго элемента до пятого.

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

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

32
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
07.12.2011, 17:53 #16
Цитата Сообщение от Петррр Посмотреть сообщение
А разве обязательно выполнять метод c_str()?
нет
Цитата Сообщение от 69Seph Посмотреть сообщение
просто этот контестер...очень вредный
1. писать нужно самому
2. не использовать std::string
0
69Seph
0 / 0 / 0
Регистрация: 02.12.2011
Сообщений: 34
07.12.2011, 17:58  [ТС] #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).
0
-=ЮрА=-
Заблокирован
Автор FAQ
07.12.2011, 18:00 #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;
}
0
Миниатюры
reverse string'a  
-=ЮрА=-
Заблокирован
Автор FAQ
07.12.2011, 18:02 #19
Цитата Сообщение от Петррр Посмотреть сообщение
А разве обязательно выполнять метод c_str()?
- лично у меня компилятор отказывается выводить std::string метод c_str() вернёт const char *
0
69Seph
0 / 0 / 0
Регистрация: 02.12.2011
Сообщений: 34
07.12.2011, 18:02  [ТС] #20
не корректно работает...прочитайте плз задание выше
0
-=ЮрА=-
Заблокирован
Автор FAQ
07.12.2011, 18:06 #21
69Seph, вообще допустмо использовать char[] вместо string?

Добавлено через 59 секунд
69Seph, мне не понятно на кой 5 вводить?Оно точно нужно?
0
69Seph
0 / 0 / 0
Регистрация: 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;
}
0
Миниатюры
reverse string'a  
-=ЮрА=-
Заблокирован
Автор FAQ
07.12.2011, 18:13 #24
В моём вводе после 33 идёт ещё пробел - в сумме будет 5-ть пробелов в строке
0
69Seph
0 / 0 / 0
Регистрация: 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;
}
0
Миниатюры
reverse string'a  
69Seph
0 / 0 / 0
Регистрация: 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
69Seph
0 / 0 / 0
Регистрация: 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
07.12.2011, 18:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.12.2011, 18:46
Привет! Вот еще темы с ответами:

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

функция 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(); если можно фул прогу бо завтыкал тему чёто)))))

Как правильно вписать значение $stringa ? - PHP
Вот такой код (на PHP): $string = &quot;&lt;A href='javascript: function('&quot;.$a.&quot;')'&gt;Ссылка&lt;/a&gt;&quot;; PHP создаёт переменную нормально, но в...


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

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

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