IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Algortimus - výpis četnosti všech čísel v řetězci

Aktivity
Avatar
Miroslav Jiránek:4.6.2018 21:48

Ahoj,
snažím se udělat algortimus na počítání četnosti jetnotlivých smybolů v celé řetězci. Algortimus může být napsaný v C, ale raději bych byl kdyby mi někdo poskytnul pouze algoritmus, příp. vývojový diagram, podle kterého bych si kod napsal sám. Nepíšu sem o vyřešení problému, chtěl bych pouze poradit :)

Zkusil jsem: zkoušel jsem převést symboly do ASCII tabulky a potom je vyčíst. Nikam jsem se s tímhle postupem ale nedostal, protože každý znak má různá počet číslic a vypisovalo mi to chybné znaky

Chci docílit: snažím se přijít na algoritmus, který by vypsal počet všech použitých symbolu v řetězci.
názorná ukázka:
Hello, world.
"H"=1
"e"=1
"l"=3
"o"=2
"," = 1
" "=1
"w"=1
"r"=1
"d"=1
"."=1

 
Odpovědět
4.6.2018 21:48
Avatar
Odpovídá na Miroslav Jiránek
Matúš Olejník:4.6.2018 23:45

Keď sa pozrieš na ASCII tabuľku tak zistíš, že každému znaku prislúcha nejaká dekadická hodnota v rozmedzí <0 až 127> a preto túto hodnotu vieš použiť ako index do poľa s názvom napr histogram, ktoré bude mať veľkosť práve 128.

Takže ak budeš prechádzať reťazcom po jednotlivých znakoch, získaš ich ASCII hodnotu (napr. (int)'A' je 65) a túto hodnotu použiješ ako index do histogramu kde inkrementuješ počet o 1, histogram[(in­t)'A']++; .

Nakoniec ak budeš chcieť vypísať počty znakov v reťazci už len stačí prejsť celým polom a vypísať jeho hodnoty.

printf("Znak %c sa nachádza v reťazci %d krát", (char)i, histogram[i]);
Nahoru Odpovědět
4.6.2018 23:45
/* I am not sure why this works but it fixes the problem */
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.