С - как подсчитать количество встречающихся символов?
Нужно посчитать частотность в строке букв. Желательно без макросов. Если в цикле считывать массив символов, но как посчитать частотность уже прочитанных символов. Читать массив символов и собирать внутри него другой массив по которого каждый раз при новом символе проходить и как-то увеличивать - запоминать счетчик? Или можно по другому варианту решить?
Начал писать, но как подсчитать те символы что уже встречались не соображу пока.
#include <stdio.h>
#include <string.h>
int main (void)
{
char * s = "This is the test string.";
int size = strlen(s), i;
for(i = 0; i < size; i++){
if(s[i] != ' '){
printf("%c", s[i]);
}
}
return 0;
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Массив из 256 (по числу букв) элементов. Больше ничего не надо...
#include <stdio.h>
#include <string.h>
int main ()
{
char s[] = "This is the test string.";
int cnt[256] = {0};
for(char * c = s; *c; cnt[(unsigned char)*c++]++);
for(int i = 0; i < 256; ++i)
if (cnt[i])
printf("%c -- %d\n", (char)i, cnt[i]);
}