toupper(ch);
не меняет регистр гл. Функция toupper
возвращает значение в верхнем регистре, поэтому вам нужно
ch = toupper(ch);
Далее
alphabet[counts++];
явно неверно, так как не использует значение ch
. Вам нужен способ преобразования ch
в целое число, чтобы вы могли использовать это целое число для индексации массива alphabet
. То есть вам нужно преобразовать «A» -> 0, «B» -> 1, «C» -> 2 и т. д. Делая почти наверняка верное предположение, что вы используете набор символов ASCII, вы можете сделать это простым вычитанием
ch - 'A'
Соединяя это с инкрементным кодом, вы получаете
alphabet[ch - 'A']++;
Наконец-то это неправильно
for (int i = 0; i < 26; i++) //Displays number of occurrences for each character A-Z
{
cout << alphabet[counts] << endl;
}
, поскольку ваша переменная цикла i
, но по какой-то причине вы использовали counts
внутри цикла. Должно быть
for (int i = 0; i < 26; i++) //Displays number of occurrences for each character A-Z
{
cout << alphabet[i] << endl;
}
Обратите внимание на код, который вы пишете, поскольку компилятор будет делать именно то, что вы говорите, даже если это не имеет смысла.