Считать символы алфавита из массива?

Итак, в этой программе мы должны

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 для этого. Как будто я предполагаю, что вы смотрите на символы из файла, но я не понимаю, как вы получаете это значение и продолжаете. Я не знаю, имеет ли я смысл, но я надеюсь, что я делаю, и кто-то может помочь !! Заранее спасибо.

-3

Решение

Вещи, которые нужно:

  1. Массив для хранения символов, которые вы прочитали. Я думаю chArray это тот массив.
  2. Массив для хранения количества букв алфавита. Я не вижу этот массив.
  3. Обновите код в 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']++;
}
}
}
0

Другие решения

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
}
}
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector