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

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

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

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

23.10.2012, 17:29. Просмотров 2164. Ответов 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". Не могу понять, что не так в моем коде.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.10.2012, 17:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Переставить символы в строке в обратном порядке (C++):

Переставить в строке символы в обратном порядке - C++
Составить программу, которая из заданного текстового файла произвольной длины читает строку и переставляет в ней символы в обратном...

В каждой строке матрицы переставить в обратном порядке элементы - C++
Разработать программу обработки прямоугольной матрицы – двумерного динамического массива. В каждой строке матрицы переставить в обратном...

Напишите программу, переставляющую символы в строке в обратном порядке по заданному шаблоном виду - C++
Напишите программу, переставляющую символы в строке в обратном порядке по заданному шаблоном виду. Выведите исходную и преобразованную...

Сколько букв останется на своих местах в данной строке, ес¬ли ее символы записать в обратном порядке - C++
Сколько букв останется на своих местах в данной строке, ес¬ли ее символы записать в обратном порядке c++ Добавлено через 5 часов 45...

Если в A есть символы из B и в B нет повторяющихся символов, то упорядочить символы B в порядке, обратном к алфавитном - C++
Привет, форумчане! Дано задание: &gt;Даны строки A и B. Если в A есть символы из B и в B нет повторяющихся символов, то упорядочить...

Переставить в обратном порядке элементы массива - C++
Дан массив А из N целых чисел и целые значения K и L(1&lt;K&lt;Л&lt;N).Переставить в обратном порядке его элементы,расположенные между А(к) и...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
DiffEreD
1430 / 767 / 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;
}
1
Hai
0 / 0 / 0
Регистрация: 23.10.2012
Сообщений: 4
23.10.2012, 17:50  [ТС] #3
Спасибо, работает. Но хотелось бы узнать, что неправильно в моем коде. Дело в том, что нужно выполнить задания двумя способами: с использованием for и while.
0
panicwassano
592 / 560 / 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
1
DiffEreD
1430 / 767 / 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++;
    }
1
panicwassano
592 / 560 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
23.10.2012, 18:06 #6
yuron_477 мне кажется более правильным будет так
C++
1
final.append(tmp[i]);
0
Hai
0 / 0 / 0
Регистрация: 23.10.2012
Сообщений: 4
23.10.2012, 18:17  [ТС] #7
Спасибо, теперь понятно в чем была проблема
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.10.2012, 18:17
Привет! Вот еще темы с ответами:

Переставить в обратном порядке элементы массива - C++
Помогите пожалуйста Дан одномерный массив из 15 элементов. Переставить в обратном порядке: а) элементы, расположенные между вторым и...

Нужно переставить числа в обратном порядке - C++
Даны 4 числа. Организуйте перестановку данных чисел в обратном порядке. Перестановку двух чисел организуйте в виде отдельной функции....

Переставить в обратном порядке элементы массива - C++
Здравствуйте! Помогите, пожалуйста, найти и исправить ошибки в решении задачи: Дан массив размера 10. Переставить в обратном...

Переставить слова из файла в обратном порядке - C++
Задание звучит так : Дан файл с неизвестным количеством слов и строк.Создать новый файл каждая строка которого получается из...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
23.10.2012, 18:17
Ответ Создать тему
Опции темы

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