Мне нужно написать программу, которая использует массив для хранения значения введенной пользователем строки и поиска гласных и согласных с использованием массива гласных и массива согласных. Также и советы по написанию кода в целом приветствуется. Проблема, с которой я сталкиваюсь, заключается в том, что при подсчете кажется, что это происходит только в случае А, но выход из дела Е, кажется, работает нормально. И когда дело касается А, это не считается. Спасибо!
#include <iostream>
#include <iomanip>
#include <cstdlib>
int vowelsCount(char *); //count the vowels
int consonantCount(char *); //count the consonants
int totalString(char *); //count how big the word is
void endProgram(); //goodbye function
//Used as the main menu
int main(int argc, char** argv) {
const int VOWEL_SIZE = 10; //amount of vowels
const int CONS_SIZE = 44; //amount of consonants
const int USER_STRING_SIZE = 51; //max character limit
char userString[USER_STRING_SIZE]; //User entered string
char uEndInput = 'y';
char uAns; // user menu answer
//Get a word from user
std::cout << "Please enter a string (up to 50 characters)" << std::endl;
std::cin.getline(userString, USER_STRING_SIZE); //get the sting from the console
//menu
std::cout << "\n\n Please select what you would like to do:\n";
std::cout << "\t A) Count the vowels of a string.\n";
std::cout << "\t B) Count the consonants of a string.\n";
std::cout << "\t C) Count both vowels and consonants of a string.\n" ;
std::cout << "\t D) Enter another string.\n";
std::cout << "\t E) Exit Program.\n" << std::endl;
std::cin >> uAns; // user inputs answer
switch(uAns){
case 'A':
case 'a':{
std::cout << "The total vowel count is: " << vowelsCount(userString) << " \n";
break;
}
case 'B':
case 'b':{
std::cout << "The total consonant count is: " <<
consonantCount(userString) << " \n";
break;
}
case 'C':
case 'c':
std::cout << "The total word count is: " << totalString(userString) << "
\n";
break;
/*case 'd':
case 'D':
return main();
break;
}*/
case 'E':
case 'e':{
return 0;
break;
}
}
return 0;
}
int vowelsCount(char *userVowelPtr ){
char vowelsArray[] = {'A', 'a', 'E', 'e', 'I', 'i', 'O', 'o', 'U', 'u',
'\0'};
char *vArrayPtr = vowelsArray;
int numVowels = 0;
while(*userVowelPtr != '\0')
{
if (*userVowelPtr == *vArrayPtr ){
numVowels++; //Add one to the count
}
userVowelPtr++; //point to next character
vArrayPtr++; //point to next vowel
vArrayPtr = vowelsArray; //set vowelsPtr to first element again
}
std::cout << "\n\n";
return numVowels;
}
int consonantCount(char *consPtr ){
char consonantArray[] = {'B', 'b', 'C', 'c', 'D', 'd', 'F', 'f', 'G', 'g', 'H', 'h', 'J', 'j', 'K', 'k', 'L','l', 'M', 'm', 'N', 'n',
'P', 'p', 'Q', 'q', 'R', 'r', 'S', 's', 'T', 't', 'V', 'v', 'W', 'w', 'X', 'x', 'Y', 'y', 'Z', 'z', '\0'};
char *cArrayPtr = consonantArray;
int numCons = 0;
while(*consPtr != '\0')
{
if (*consPtr == *cArrayPtr ){
numCons++; //Add one to count
}
cArrayPtr++;//point to next consonant
consPtr++;//point to next character
cArrayPtr = consonantArray; //set vowelsPtr to first element again
}
std::cout << "\n\n";
return numCons;
}
int totalString(char *totalPtr ){
int letters = 0;
while (*totalPtr != '\0'){
letters++;
}
std::cout << "The total letter is:" << letters << std::endl;
return letters;
}
void endProgram(){
std::cout << "THank you for using the letter counter, have a good day." <<
std::endl;
}