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

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

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

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

23.10.2012, 17:29. Просмотров 2103. Ответов 6
Метки нет (Все метки)

Добрый вечер. Помогите пожалуйста разобраться в программке.

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++
C++ Если в A есть символы из B и в B нет повторяющихся символов, то упорядочить символы B в порядке, обратном к алфавитном
C++ Переставить в обратном порядке элементы массива
Переставить в обратном порядке элементы массива C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DiffEreD
1429 / 766 / 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
1429 / 766 / 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++ Переставить цифры числа в обратном порядке
Переставить в обратном порядке элементы массива C++
Переставить слова из файла в обратном порядке C++

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

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

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