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

Переставить символы в строке в обратном порядке - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.93
Hai
0 / 0 / 0
Регистрация: 23.10.2012
Сообщений: 4
23.10.2012, 17:29     Переставить символы в строке в обратном порядке #1
Добрый вечер. Помогите пожалуйста разобраться в программке.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
    cout << "Enter string\n";
    string temp, final;
    cin >> temp;
    int n=0;
    for (int i=temp.length()-1; i>=0; i--)
    {
        
        final[n]=temp[i];
        n++;
    }
    cout << final << endl;
    return 0;
}
Выполняю программу, после окончания ввода строки появляется ошибка "string subscript out of range". Не могу понять, что не так в моем коде.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.10.2012, 17:29     Переставить символы в строке в обратном порядке
Посмотрите здесь:

C++ Переставить в обратном порядке элементы массива
Сколько букв останется на своих местах в данной строке, ес¬ли ее символы записать в обратном порядке C++
C++ Напишите программу, переставляющую символы в строке в обратном порядке по заданному шаблоном виду
C++ Если в A есть символы из B и в B нет повторяющихся символов, то упорядочить символы B в порядке, обратном к алфавитном
Переставить в строке символы в обратном порядке C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
23.10.2012, 17:44     Переставить символы в строке в обратном порядке #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
 
int main()
{
    setlocale (LC_ALL, "Russian");
    string str = "Помогите пожалуйста разобраться в программке";
    reverse(str.begin(), str.end());
    cout<<str<<endl;
    system("pause");
    return 0;
}
Hai
0 / 0 / 0
Регистрация: 23.10.2012
Сообщений: 4
23.10.2012, 17:50  [ТС]     Переставить символы в строке в обратном порядке #3
Спасибо, работает. Но хотелось бы узнать, что неправильно в моем коде. Дело в том, что нужно выполнить задания двумя способами: с использованием for и while.
panicwassano
591 / 559 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
23.10.2012, 18:02     Переставить символы в строке в обратном порядке #4
Цитата Сообщение от Hai Посмотреть сообщение
с использованием for и while.
через while
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
using namespace std;
 
int main()
{
    char str[] = "Hello World!";
    char *last = str + strlen(str) - 1;
    char *begin = str;
 
    while (last > begin){
        swap(*begin++, *last--);
    }
 
    cout << str;
    return 0;
}
Добавлено через 3 минуты
Цитата Сообщение от Hai Посмотреть сообщение
что неправильно в моем коде
у вас final пустая строка, и память под нее в контейнере не выделена, а вы пытаетесь обратиться к n-му символу. Если используете string, то используйте STL
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
23.10.2012, 18:03     Переставить символы в строке в обратном порядке #5
C++
1
2
3
4
5
6
for (int i=temp.length()-1; i>=0; i--)
    {
 
        final.push_back(temp[i]); //final[n] (final не инициализирована)
        n++;
    }
panicwassano
591 / 559 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
23.10.2012, 18:06     Переставить символы в строке в обратном порядке #6
yuron_477 мне кажется более правильным будет так
C++
1
final.append(tmp[i]);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.10.2012, 18:17     Переставить символы в строке в обратном порядке
Еще ссылки по теме:

C++ Переставить цифры числа в обратном порядке
C++ Переставить в обратном порядке элементы массива
Переставить в обратном порядке элементы массива C++

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

Или воспользуйтесь поиском по форуму:
Hai
0 / 0 / 0
Регистрация: 23.10.2012
Сообщений: 4
23.10.2012, 18:17  [ТС]     Переставить символы в строке в обратном порядке #7
Спасибо, теперь понятно в чем была проблема
Yandex
Объявления
23.10.2012, 18:17     Переставить символы в строке в обратном порядке
Ответ Создать тему
Опции темы

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