Итак, в этой программе мы должны
A. Подсчитайте количество каждой буквы алфавита, найденной в массиве символов, и сохраните эти числа в массиве целых чисел.
Я понимаю эту часть, но потом говорится, что мы должны использовать значения ASCII, что смущает меня.
Это файл для справки:
" A frog walks into a bank and asks the teller, Miss Pattywack
for a loan. Miss Pattywack tells the frog,
"you must have collateral for the loan".
The frog pulls out of his pouch his porcelain people collection
and offers them as collateral.
Miss Pattywack looks at the figurines and tells the frog that
the collection is not acceptable.
The bank manager overhears the conversation and yells to the
teller - "It's a nick nack Pattywack, give the frog a loan!"
Используйте цикл for для проверки каждого символа в массиве символов
я. Используйте toupper для ввода буквы, чтобы иметь дело только с заглавными буквами
II. Если символ является буквой алфавита, увеличьте массив целых чисел в положение значения символа ASCII минус 65
1) 65 — значение буквы ASCII, ‘A’
(1) Если символ A, 65-65 = 0 позиция, которую вы хотите увеличить для символа A
(2) Если символ C, 67-65 = 2 позиция, которую вы хотите увеличить для символа C
У меня есть это до сих пор:
void CountAlphabetCharacters(char chArray[MAX_CHARACTERS], int lengthOfArray)
{
int index;
for(index = 0; index <= lengthOfArray; index++)
{
chArray[index] = toupper(chArray[index]);
static_cast<int>(index);
}
}
Это все, что у меня есть, потому что это все, что я понимаю. Я имею в виду, я понимаю, как вы получаете значение ASCII, но я так растерялся, как на самом деле сделать цикл for для этого. Как будто я предполагаю, что вы смотрите на символы из файла, но я не понимаю, как вы получаете это значение и продолжаете. Я не знаю, имеет ли я смысл, но я надеюсь, что я делаю, и кто-то может помочь !! Заранее спасибо.
Вещи, которые нужно:
chArray
это тот массив.CountAlphabetCharacters
пройти через символы в chArray
и обновить количество букв в chArray
,Перед звонком CountAlphabetCharacters
создать массив для хранения количества символов.
int charCountArray[26] = {0};
Изменить функцию CountAlphabetCharacters
принять это в качестве аргумента.
void CountAlphabetCharacters(char chArray[MAX_CHARACTERS],
int charCountArray[],
int lengthOfArray)
Используйте это в качестве аргумента при вызове CountAlphabetCharacters
,
Обновить реализацию CountAlphabetCharacters
,
void CountAlphabetCharacters(char chArray[MAX_CHARACTERS],
int charCountArray[],
int lengthOfArray)
{
int index;
int ch;
for(index = 0; index <= lengthOfArray; index++)
{
// The character at the index.
ch = chArray[index];
// Check whether it is an alphabetical character.
if ( isalpha(ch) )
{
// If so, make it the uppercase letter.
ch = toupper(ch);
// Increment the charCountArray for the letter.
charCountArray[ch-'A']++;
}
}
}
void CountAlphabetCharacters(char chArray[MAX_CHARACTERS], int lengthOfArray)
{
int index;
int counter[26]={0}; // holds occurrence of each character
for(index = 0; index < lengthOfArray; index++)
{
if(isalpha(chArray[index]){
int val = (int)toupper(chArray[index]);
counter[val-65]++; //increment occurrence count for this character
}
}
for(char c ='A',index = 0; index <26; index++,c++)
{
printf("%c : %d", c, counter[index]); //print character and corresponding occurrence
}
}