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 ord 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;
}