@Retr0Hacker

Как определить количество разных букв алфавита?

Задача: "Ввести предложения на русском. Определить количество различных букв русского алфавита".

У меня есть программа для поиска разных букв и она работает корректно, но только с английским алфавитом. Как её переделать для работы с русским алфавитом?

Есть идея создать массив с буквами русского алфавита и уже таким образом искать разные буквы в предложении (т.е. если буква в предложении соответствует букве из массива, то произвести определенные действия). Что думаете об этом?

Код:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define ASCII 128

int main(void){

    system("chcp 1251");
    char s[BUFSIZ];
    int freq[ASCII] = { 0 };
    size_t i, len_s;
    unsigned int count;

    printf("Input sentence: ");
    gets_s(s, BUFSIZ - 1);

    len_s = strlen(s);
    for (i = 0; i < len_s; i++)
        if (isalpha(s[i]))
            freq[s[i]]++;

    count = 0;
    for (i = 0; i < ASCII; i++)    // i = 65
        if ((isalpha(i)) && (freq[i] > 0))
            count++;

    printf("\nDifferent chars: %u", count);
    printf("\n\n");
    system("pause");
    return EXIT_SUCCESS;
}
  • Вопрос задан
  • 117 просмотров
Пригласить эксперта
Ответы на вопрос 1
wataru
@wataru
Разработчик на С++, экс-олимпиадник.
Попробуйте константу ascii уведичить до 256. Русские буквы в cp1251 идут во второй половине алфавита.

Edit, ну и тип строки unsigned char надо. А то к отрицательным индексам будет доступ.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы