Почему оба моих массива находятся в обратном порядке, когда я собираюсь перевернуть только один из них? [C ++] - PullRequest
0 голосов
/ 07 мая 2020

Попытка создать своего рода средство проверки Palindrome, и один из процессов включает в себя обращение массива. Пользователь вводит количество символов для ввода, вводит символы один за другим, и сам код определит, является ли это палиндромом (те же слова, когда они перевернуты, гоночная машина пишется наоборот гоночная машина). Проблема в том, что мне нужно перевернуть массив, чтобы создать условие, но вместо этого мои коды перевернули оба моих массива. Ниже приведены коды.

#include <iostream>
#include <stack>
#include <string>
using namespace std;
int main()
{
    int no = 0, j, palin = 1;
    char in, temp;
    stack <char> s, h;
    cout << "Enter amount of characters: ";
    cin >> no;
    string kimak, rord, gah;
    for (int i = 0; i < no; i++) {
        cout << "Enter word no." << (i + 1) << ": ";
        cin >> in;
        s.push(in);
    }
    for (int i = 0; i < no; i++) {
        kimak[i] = s.top();
        rord[i] = s.top();
        s.pop();
    }
    j = no - 1;
    for (int i = 0; i < j; i++, j--) { // reverses array
        temp = rord[i];
        rord[i] = rord[j];
        rord[j] = temp;
    }
    cout << "Ordered No. ";
    for (int i = 0; i < no; i++) {
        cout << kimak[i] << "\n";
    }
    cout << "\nReversed No. ";
    for (int i = 0; i < no; i++) {
        cout << rord[i] << "\n";
    }
    for (int i = 0; i < no; i++) {
        if (kimak[i] != rord[i]) {
            palin = 0;
        }
    }
    if (palin == 1) {
        cout << "Palindrome No. : YES";
    }
    if (palin == 0) {
        cout << "Palindrome No. : NO";
    }
}

1 Ответ

0 голосов
/ 07 мая 2020

У вас неопределенное поведение. kimak[i] и rord[i] не определены, поскольку обе строки имеют размер 0.

Вы можете либо изменить размер двух строк, предшествующих l oop, либо использовать функцию push_back строки.

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