Реверсивная строка C ++ - PullRequest
       27

Реверсивная строка C ++

0 голосов
/ 09 октября 2019

Я пытался создать код, который переворачивает строку, я думаю, что логика циклов верна. Но я не знаю, что не так.

#include <iostream>

int main(){
    std::cout<<"How many letters does your string have >> ";
    int nbre;
    std::cin>> nbre;
    int a;
    a=nbre-1;            
    char normal[a]={};
    char reverse[a]={};
    std::cout<<"Enter your string >> ";
    std::cin >> normal;
    for (int i=0;i<=a;i++){
        normal[i]=reverse[a-i];
    }

    std::cout << "The reversed string is >> " << std::endl;
    for (int u=0; u<=a; u++){
        std::cout<<reverse[u];
    }

    return 0;
}

введите описание изображения здесь

Ответы [ 2 ]

1 голос
/ 09 октября 2019

Вы должны использовать константу для объявления массива следующим образом:

char normal[a]={};
char reverse[a]={};

Вместо этого вы можете выделить память следующим образом:

char* normal = (char*)calloc(a+1, sizeof(char));
char* reverse = (char*)calloc(a+1, sizeof(char));

и освободить ее, как только закончите, используя ее.

+1 потому что вы должны учитывать конечный нулевой символ. Я не думаю, что разрешить учетную запись пользователя - это хорошая идея, если только ваши пользователи не будут программистами на C ... Лучше поменяйте a = nbre-1; на a=nbre;.

Наконец, вы должны былинапишите свой цикл for следующим образом:

for (int i = 1; i <= a; i++) {
    reverse[i-1] = normal[a - i];
}

Я внес много изменений в ваш цикл for. Я позволю вам сделать домашнее задание, чтобы понять, почему.

0 голосов
/ 09 октября 2019

Лично я бы загружал входную строку в массив символов и повторял ее в обратном порядке, начиная с конца входного массива и просто выполняя некоторые математические операции с индексами.

Пусть n = длина входной строки

Перейдите от i = n-1 к 0 и загрузите вход [i] в ​​обратный [ni]. Люсейон прав;вы не используете правильный метод реверсирования входной строки в первом цикле for.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...