2014-10-27 3 views
-1

Мне нужно написать прототип и реализацию функции C++, которая принимает символ и возвращает true, если символ является гласным и false в противном случае. Гласные включают прописные и строчные буквы следующих символов: «a». 'E', 'i', 'o' и 'u'.Запись прототипа функции (C++)

Я написал

bool vowelOrNot(char x) 
{ if(x="a" or "e" or "i" or "o" or "u") 
     cout<<"true"<<endl; 

    else 
     cout<<"false""<<endl; 
} 

я написал или вызвать я не знаю, как сделать линии здесь, я правильно на моей функции?

+0

Вам нужен ответ, как если бы это был псевдокод или как будто это был C++? – Drax

+1

Это неправда C++. 'или' не является ключевым словом (смотрите '||'), и вы не проверяете равенство, используя '=' (смотрите '=='). Кроме того, ваша функция должна возвращать 'bool', но вы ничего не возвращаете. – Sean

+3

Я бы использовал для этого инструкцию switch. –

ответ

0
bool vowelOrNot(char x) //x must be lowercase for the function to work as expected 
{ if(x=='a' || x=='e' || x=='i' || x=='o' || x=='u') //== for comparing and single quotes for a char. 
    //|| is the logical OR 
    { 
     cout<<"true"<<endl; 
     return true; //return true to function caller 
    } 
    else 
     cout<<"false"<<endl; 
    return false;//return false to function caller 
} 
+0

Я знаю знаки или знаки, но как я их пишу на клавиатуре? любая помощь? и если в этой функции или основной функции должны присутствовать инструкции cout, так как все, что мне нужно сделать в этой функции, возвращает true или flase. – user3531022

+0

@ user3531022, кнопка над клавишей ввода?И 'cout' dosen't matter, если он помещен здесь или в' main'. Если в 'main', функция' cout << "вернулась" << vowelOrNot (yourchar); ' –

+0

@ user3531022 shift + \ for me –

-1

Попробуйте это:

bool vowelOrNot(char x) 
    { if(x=='a' || x=='e' || x=='i' || x=='o' || x=='u' || x=='A' || x=='E' || x=='I' || x=='O' || x=='U') 
     { 
      cout<<"true"<<endl; 
      return true; 
      } 

     else 
     { 
      cout<<"false"<<endl; 
      return false; 
     } 
    } 
+0

Где возвращение? –

+0

пропущено это. отредактировал –

0

Вам нужно будет тест, например,

int 
main (int argc, char *argv[]) 
{ 
    bool test1 = vowelOrNot ('a'); 
    std::cout << test1 << " expected to be true" << std::endl; 

    return test1 == true ? EXIT_SUCCESS : EXIT_FAILURE;  
} 

Конечно, тест не является полным. Но вы должны написать тест для всех возможных входных данных.

3

Поскольку никто не предложил, вот решение с помощью переключателя оператор:

bool vowelOrNot(char x) 
{ 
    switch (x) 
    { 
     case 'a': 
     case 'A': 
     case 'e': 
     case 'E': 
     case 'i': 
     case 'I': 
     case 'o': 
     case 'O': 
     case 'u': 
     case 'U': 
      return true; 

     default: 
      return false; 
    } 
} 

Я рассматривал toupper для преобразования ввода и проверять только капиталы в случае.

0

Будьте осторожны с использованием прототипа слова. Прототипом функции C++ является объявление, которое обычно встречается в верхней части файла перед main() или в заголовочном файле модуля (возможно, первое в вашем случае). Это будет выглядеть так:

bool vowelOrNot(char); 

У вас есть реализация, но у вас неправильный синтаксис. "или" не является ключевым словом в C++. Используйте «||». Кроме того, «==» - это оператор с равным сравнением, а не «=». Я рекомендую рассмотреть хотя бы следующую документацию: http://www.cplusplus.com/doc/tutorial/control/.

Кроме того, я заметил, что ваша функция возвращает логическое значение, но вы печатаете слово для каждого булевского значения, а не возвращаете его. Если вам нужно распечатать эти слова, его следует обрабатывать в другом месте на основе возвращаемого значения функции.

Решение, которое я рекомендую следующим образом:

#include <string> 
#include <cctype> 
using namespace std; 

bool vowelOrNot(char); 

const string VOWELS = "aeiou"; 

int main 
{ 
    //some code that uses vowelOrNot, perhaps printing true and false 
} 

bool vowelOrNot(char c) 
{ 
    return VOWELS.find(tolower(c)) != string::npos; 
} 

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

Надеюсь, это поможет!