When user input number from 1 - 26 (which mean a
to z
), how to show the the letter and count how many vowel and consonant inside it.
Example: U
To show the letters, you can use a for loop, using a char as index.
int n = 13;
unsigned int vowel = 0;
unsigned int consonant = 0;
int a = (int)'a';
for (char letter = 'a'; (int)letter < a + n; letter++) {
cout << letter << " ";
if (is_vowel(letter)) vowel++;
else consonant++;
}
cout << std::endl << "vowels: "<< vowel << " consonants: " << consonant << std::endl;
So, you must implement the is_vowel method.
Your if
statement does not do what you expect it to. The correct syntax for this is
if (let=='a' || let=='e' || let=='i' || let=='o' || let=='u')
The reason the current versions is incorrect is because it is equivalent to
if ((let=='a') or ('e') or ('i') or ('o') or ('u'))
So 'e'
, 'i'
, etc are being evaluated for truthiness and or
d to the first condition. Only an empty string in this case will evaluate to false
, all of these characters will be true
. So your statement evaluates to
if ((let=='a') or true or true or true or true)
Which will always be true.
#include <iostream>
using namespace std;
/**
* Checks if the given letter is a vowel.
*/
bool isVowel(char let) {
return let == 'a' || let == 'e' || let == 'i' || let == 'o' || let == 'u';
}
/**
* Returns the character for the given int.
*/
char toChar(int num) {
return (char) ('a' + num - 1);
}
int main (void) {
int vow = 0,
con = 0,
num,
i;
char let;
cout << "Please enter a number: ";
cin >> num;
for (i = 1; i <= num; ++i) {
let = toChar(i);
if (isVowel(let)) vow++;
else con++;
}
cout << "The letter was \"" << let
<< "\" and there were " << vow
<< " vowels and " << con
<< " consonants." << endl;
return 0;
}