Tyto stránky již nejsou udržovány. Obsah je postupně přesouván/aktualizován na adrese chytrosti.marrek.cz.
1/1
Na této stránce jsou k dispozici zdrojové soubory, které jsem vytvářel při výkladu během výuky. Nejsou to ukázkové a bezchybné zdrojové soubory. Ba naopak, jsou to pracovní neučesané verze, které vznikaly interaktivně ve výuce, často s cílem ukázat, že "takto se to nemá".
1 /*
2 * Soubor: 20101108-Mon-pocty-pismen.c
3 * Datum: 08.11.2010 10:05
4 * Autor: Marek Nožka, nozka z@vináč spseol tečka cz
5 * Licence: GNU/GPL
6 * Úloha: počítat výskyty jednotlivých písmen v textu.
7 * Popis:
8 */
9
10 #include <stdio.h>
11
12 /////////////////////////////////////////////////////
13 #define POCET 'Z'-'A'+1 // počet písmen v abcedě
14
15 /*
16 * Funkce pro převod malých písmen na velká
17 */
18 int na_velka_pismena(int c) {
19 if ( c >= 'a' && c<= 'z') {
20 return c - ('a'-'A');
21 } else {
22 return c;
23 }
24 }
25
26 /**
27 * Hlavní program.
28 */
29 int main(void) {
30 int ppismen[POCET];
31
32 /* inicializace pole*/
33 for (int i=0;i<POCET;i++) {
34 ppismen[i] = 0;
35 }
36 int znak;
37 while ( (znak = getchar() ) != EOF) {
38 znak = na_velka_pismena(znak);
39 if ( znak >= 'A' && znak <='Z' ) {
40 ppismen[znak - 'A']++;
41 }
42 }
43 /* výpis pole na obrazovku*/
44 for (int i=0;i<POCET;i++) {
45 printf("%c:%d\n",'A'+i,ppismen[i]);
46 }
47
48 /* hledání prvku s maximální četností*/
49 int max=0; // index nejčetnějšího písmene
50 for (int i=1;i<POCET;i++) {
51 if ( ppismen[i] > ppismen[max] ) {
52 max = i;
53 }
54 }
55 printf("Nejčetnější je %c s četností %d\n",'A'+max,ppismen[max]);
56 return 0;
57 }