2016-11-15 4 views
-1

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

#include <iostream> 
#include <string> 
#include <cstdlib> 


using namespace std; 



int main() { 


    string message, pig_message; 
    getline(cin, message); 

    unsigned int x = message.find_first_of("aeiou"); 
    if (message[x] == 'a' || 'e' || 'i' || 'o' || 'u') { 
     pig_message = message + "yay"; 
     cout << pig_message; 

    } 
    else if (!(message[x] == 'a' || 'e' || 'i' || 'o' || 'u')) { 
     pig_message = message.substr(1) + message[0] + "ay"; 
     cout << pig_message; 
    } 



    system("pause"); 
    return 0; 
} 
+0

http://ericlippert.com/2014/03/05/how-to-debug-small-programs/ – Biffen

+3

'message [x] == 'a' || 'e' || 'i' || 'o' || 'u'' does * not * означает, что вы думаете, что это значит. – Biffen

+1

Это должно быть 'if (message [x] == 'a' || message [x] == 'e' || ...) {'. – songyuanyao

ответ

0

Неверное описание сравнения. Убедитесь, что ваша функция фактически выполняет итерацию по буквам и что вы правильно конкатенируете строки.

So: unsigned int x = message.find_first_of ("aeiou"); // Возвращает первое совпадение if (message [x] == 'a' || message [x] == 'e' ...) // В настоящее время ваш код читается только для проверки.

Думай об этом как IF сообщение [х] = а, если Е, ЕСЛИ я против , если сообщение [х] = а, IF сообщение [х] = я

Что делает ваш код делать после него находит совпадение? pig_message = message + 'yay' добавит «yay» к всей строке сообщения. Затем он распечатывал и двигался дальше, ничего не делая с другими гласными.

Я новичок в C++ сам, но именно так я понял ваш код.

Возможно, лучше пройти через всю строку ввода одну букву за раз в цикле for с помощью операторов if else, чтобы добавить строки внутри цикла.

+0

Подробно ваш ответ. – Mistalis

0

Первая инструкция if всегда верна. Вы должны изменить его

if (message[x] == 'a' || message[x] == 'e' || message[x] == 'i' || message[x] == 'o' || message[x] == 'u') { 

Кроме того, вы можете изменить else if (...) { линию только

else { 

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