Zdravím, narazil jsem na úlohu k procvičování ale nemohu přijít na to, jak to udělat bez knihovny string.h
Výpis četnosti písmen v řetězci na příklad: "Ahoj jak se mas?"
a:3
h:1
o:1
j:2
k:1
s:2
e:1
m:1
Zdravím, narazil jsem na úlohu k procvičování ale nemohu přijít na to, jak to udělat bez knihovny string.h
Výpis četnosti písmen v řetězci na příklad: "Ahoj jak se mas?"
a:3
h:1
o:1
j:2
k:1
s:2
e:1
m:1
#1 Toom
Vytvořit si int pole o velikosti 'z' - 'a' a inicializovat ho na nulu. Projet celý řetězec for/while loopem, na každém indexu se podívat, co to je za char a na základě daného charu inkrementovat konkrétní index o jedna.
Ve finále projet původní int pole for loopem, podívat se na počet na daném indexu a když tam bude počet větší než jedna, daný index vypsat s tím, jaké písmeno se tam nachází.
#include <stdio.h>
int main(void) {
char * retezec = "Ahoj jak se mas?";
int cetnost[26] = { 0 };
int i;
for (i = 0; retezec[i]; i++) {
if (retezec[i] >= 'a' && retezec[i] <= 'z')
cetnost[retezec[i] - 'a']++;
else if (retezec[i] >= 'A' && retezec[i] <= 'Z')
cetnost[retezec[i] - 'A']++;
}
for (i = 0; i < 26; i++)
printf("%c: %d\n", i + 'a', cetnost[i]);
return 0;
}
Do té se mi nechce, protože UTF-8 znaky zabírají 1 - 4 chary a je to pak těžký řešit. Viz. třeba tento článek.
PS: wchar není přenositelný řešení a kódovat to v Windows-1250 nebo něčem podobným už dnes nepřichází v úvahu...
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku