Не выполняется условие после reverse

Нужно проверить перевернута ли строка и сравнить ее со второй строкой, но программа работает неправильно и выводит NO когда должна выводить YES

if (n <= 15)
    {
        for (int i = 0; i < n; i++)
        {
            cin >> s1[i];
            cin >> s2[i];
        }
        string word1 = string(s1);
        string word2 = string(s2);

        string wordReverse1(word1);
        reverse(begin(word1), end(word1));

        string wordReverse2(word2);
        reverse(begin(word2), end(word2));

        if (wordReverse1 == word2 || wordReverse2 == word1) cout << "YES" << endl;
            else cout << "No";
        
    
    }
        else cout << "Error";

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


Ответы (1 шт):

Автор решения: Harry

Проверьте, что вы ввели. Как вы думаете, нуль-символ у вас есть или нет? :)

По приведенному коду не видно, чтоб он у вас был, вот и получаете неприятности.

Да и вводите вы как-то странно, чередуя символы строк:

for (int i = 0; i < n; i++)
{
    cin >> s1[i];
    cin >> s2[i];
}

Типа, при вводе abcdef в первую строку пойдет ace и bdf во вторую? Вы так и планировали?

Вобщем, проверяйте, что вы реально ввели. Не умеете с отладчиком проверить значение переменной — просто добавьте вывод word1 и word2.

И, кстати, не вижу никакого смысла сравнивать обращения 2 раза. Зачем?

→ Ссылка