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

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

Войти
Регистрация
Восстановить пароль
 
WebMacTep
21 / 21 / 1
Регистрация: 03.10.2013
Сообщений: 128
#1

Не работает реверс строки - C++

07.01.2014, 16:47. Просмотров 369. Ответов 5
Метки нет (Все метки)

Всем привет, ребятки! Я тут принялся работать с функциями обработки строк, и у меня возник вопрос. Вот вам сначала мой код:

Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <cstdio>
#include <cstring>
 
using namespace std;
 
int main()
{
    char first[10];
    char second[10];
 
    int i;
    int j = 0;
 
    gets(first);
 
    for (i = strlen(first) - 1; i >= 0; i--, j++)
    {
        second[j] = first[i];
    }
 
    cout << first << endl << second;
 
    return 0;
}

По моим соображениям должно происходить так:
1. вводим строку first
2. строка second становится зеркальным её отражением
3. выводится строка first и её зеркальное отражение (second)

Но вот на практике у меня выходит какая-то ерунда.

Может, подскажете, где ошибка?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.01.2014, 16:47     Не работает реверс строки
Посмотрите здесь:

Реверс строки - C++
Не могу написать программу которая перестанавливает символы в строке(abc-&gt;cba)

Реверс строки - C++
Привет ребят, вообщем я первокурсник и только разбираюсь с основами, у меня лабораторная работа нужно что бы строчка была задом наперед,...

Функция и реверс строки - C++
1. Составить программу, которая реверсирует каждое слово строки str. 2. Написать и протестировать функцию STRP(str1, str2), которая...

Реверс строки в стиле Си - C++
Подскажите как написать собственную функцию реверса строки в стиле СИ?

Реверс строки через итераторы - C++
std::string s=&quot;123456&quot;; s.replace(s.begin(),s.end(),s.rbegin(),s.rend()); std::cout&lt;&lt;s&lt;&lt;std::endl; Почему-то работает правильно и...

Реверс строки в обратно алфавитном порядке - C++
Написать программу для ввода строки и вывода ее в обратном порядке по алфавиту Добавлено через 1 час 32 минуты #include&lt;iostream&gt; ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TrueBit
95 / 95 / 12
Регистрация: 19.11.2012
Сообщений: 195
07.01.2014, 16:58     Не работает реверс строки #2
можно так(но тогда нужно еще следить, чтобы строка не была длиннее 9 символов и не вышла за границу, либо объявить массивы большего размера):
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
#include <iostream>
#include <cstdio>
#include <cstring>
 
using namespace std;
 
int main()
{
    char first[10];
    char second[10];
 
    int i;
    int j = 0;
 
    gets(first);
 
    for (i = strlen(first) - 1; i >= 0; i--, j++)
    {
        second[j] = first[i];
        second[j+1] = '\0';
    }
 
    cout << first << endl << second;
 
    return 0;
}
я бы сделал так:
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()
{
    string first;
    string second;
 
    cin >> first;
 
    second.resize(first.size());
    for(int i=first.size()-1, j=0; i>=0; i--, j++)
        second[j]=first[i];
 
    cout << first << endl << second;
 
    return 0;
}
MihaniX
134 / 44 / 1
Регистрация: 06.08.2013
Сообщений: 292
Записей в блоге: 4
07.01.2014, 17:02     Не работает реверс строки #3
Только хотел отправить тоже самое что и Вы, но меня опередили)
WebMacTep
21 / 21 / 1
Регистрация: 03.10.2013
Сообщений: 128
07.01.2014, 17:03  [ТС]     Не работает реверс строки #4
TrueBit, ага, спасибо. А я правильно понял, что здесь вы заменяете следующий символ после отражённого символом конца строки?
C++
1
2
second[j] = first[i];
second[j+1] = '\0';
TrueBit
95 / 95 / 12
Регистрация: 19.11.2012
Сообщений: 195
07.01.2014, 17:07     Не работает реверс строки #5
Цитата Сообщение от WebMacTep Посмотреть сообщение
TrueBit, ага, спасибо. А я правильно понял, что здесь вы заменяете следующий символ после отражённого символом конца строки?
C++
1
2
second[j] = first[i];
second[j+1] = '\0';
Да. Можно было и после цикла(строка не должна быть более 9 символов для таких массивов. последний элемент под '\0')
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
#include <iostream>
#include <cstdio>
#include <cstring>
 
using namespace std;
 
int main()
{
    char first[10];
    char second[10];
 
    int i;
    int j = 0;
 
    gets(first);
 
    for (i = strlen(first) - 1; i >= 0; i--, j++)
        second[j] = first[i];
    second[j] = '\0';
    
    cout << first << endl << second;
 
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.01.2014, 17:09     Не работает реверс строки
Еще ссылки по теме:

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

Строки, работа с файлом. Реверс и циклический сдвиг в словах - C++
Вот задание Для произвольного текста(Взятого из файла), содержащего не более 10 строк, в каждой строке не более 80 символов, переставить...

Создайте символьный фильтр, производящий реверс или обращение входной строки - C++
3. Создайте символьный фильтр, производящий реверс или обращение входной строки.

Бит реверс - C++
Вводится число в десятичной системе надо записать его в двоичной и перевернуть. Полученое число надо выписать в десятичной системе помогите...

Реверс массива - C++
Задание такое: Нужно сделать массив из 30 чисел, чтобы он отображался на экране наоборот и по 3 числа в столбик, при этом поменять столбики...

Реверс списка - C++
Есть односвязный список. Требуется создать реверс списка, после чего продлить основной список этим реверсом(т.е. добавить к нему). При этом...


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

Или воспользуйтесь поиском по форуму:
WebMacTep
21 / 21 / 1
Регистрация: 03.10.2013
Сообщений: 128
07.01.2014, 17:09  [ТС]     Не работает реверс строки #6
TrueBit, вдвойне спасибо!
Yandex
Объявления
07.01.2014, 17:09     Не работает реверс строки
Ответ Создать тему
Опции темы

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