Не выполняется условие после 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 раза. Зачем?
