Обратная строка в C ++ - PullRequest
       19

Обратная строка в C ++

0 голосов
/ 24 октября 2018
#include <iostream>
#include <cstdlib>
using namespace std;

main() 
{
beginning:
    string name;
    cout << "Hey! Enter your name" << endl;
    cin >> name;
    int i = name.length() - 1;
    do
    {
        cout << name[i];
        i--;
    } while (i > -1);
    cout << " Your reverse name is " << name[i] << endl;
    cout << name[i] << " Your reverse name is " << endl;
    goto beginning;
}

enter image description here

  1. Почему "zsuidakrA" отображается перед "Ваше обратное имя" хотя я закодировал как cout<<" Your reverse name is "<<name[i]<<endl;
  2. Для cout<<name[i]<<" Your reverse name is "<<endl; этой строки я нашел только "Ваше обратное имя" , но имени нет.Почему?

Ответы [ 4 ]

0 голосов
/ 24 октября 2018

Вы можете использовать std :: reverse, чтобы перевернуть его для вас:

#include <iostream>
#include <cstdlib>
#include <algorithm> // std::reverse

int main(){
    std::string name;
    while(true) {
        std::cout << "Hey! Enter your name: " << std::flush;
        std::cin >> name;
        std::cout << "Your name is: " << name << "\n";
        std::reverse(begin(name), end(name));
        std::cout << "Your reverse name is: " << name << "\n";
    }
}
0 голосов
/ 24 октября 2018

Удалить последние два оператора cout.Обратная строка уже печатается оператором cout внутри цикла do-while.Вы можете переместить

cout<<" Your reverse name is "<<endl;

перед оператором do, если это действительно необходимо ..

0 голосов
/ 24 октября 2018

1) потому что вы печатаете имя [i] в ​​цикле do while перед оператором cout.

2) потому что значение i = -1 после того, как оно выходит из цикла do while как (i> -)1) условие становится ложным, и имя [-1], вероятно, ничего не печатает.

0 голосов
/ 24 октября 2018

Сначала вы выводите обратную строку, а затем выводите Your reverse name is.Но строка никогда не переворачивается.Используйте:

string reverse_name(name.rbegin(), name.rend())

для создания обратной строки.

Затем отобразите ее, используя cout.

Просто для справки, не используйте goto с...

...