Tyto stránky již nejsou udržovány. Obsah je postupně přesouván/aktualizován na adrese chytrosti.marrek.cz.

1/1

Zdrojové soubory z výuky

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á".

20101105-Fri-pocty-znaku-P4.c
   1 /*
   2  * Soubor:  20101105-Fri-pocty-znaku-P4.c
   3  * Datum:   05.11.2010 08:25
   4  * Autor:   Marek Nožka, nozka z@vináč spseol tečka cz
   5  * Licence: GNU/GPL 
   6  * Úloha:  počet jednotlivých znaků
   7  * Popis:   
   8  */
   9 
  10 #include <stdio.h>
  11 #include <stdbool.h>
  12 
  13 int na_velka_pismena(int c)
  14 {
  15     if ( c >= 'a' && c <='z') {
  16         return c - ('a' - 'A');
  17     } else {
  18         return c;
  19     }
  20 }
  21 
  22 /////////////////////////////////////////////////////
  23 #define PPISMEN 'Z'-'A'+1
  24 /**
  25  * Hlavní program.
  26  */
  27 int main(void) {
  28     int pznaku[PPISMEN] ;
  29         
  30     /* inicializace pole -- naplním pole nulovými hodnotami*/
  31     for (int i=0;i<PPISMEN;i++) {
  32         pznaku[i] = 0;
  33     }
  34     /* jestliže načtu znak navýším hodnotu v dané buňce pole*/
  35     int znak;
  36     while ( (znak = getchar()) != EOF ) {
  37         znak = na_velka_pismena(znak);
  38         if ( znak >= 'A' && znak <='Z') {
  39             pznaku[znak - 'A'] += 1;
  40         }
  41     }
  42     /* Výpis pole a přiřazení jednotlivých buněk písmenům  */
  43     for (int i=0;i<PPISMEN;i++) {
  44         printf("%c: %d\n",'A'+i,pznaku[i]);
  45     }
  46     /* hledání nejčetnějšího znaku */
  47     short i_max = 0; // index nejčetnějšího prvku
  48     for (int j=1;j<PPISMEN;j++) {
  49         if ( pznaku[j] > pznaku[i_max] ) { // pokud je hodnota prvku větší než doposud největší
  50             i_max = j;  // zapamatuji si index
  51         }
  52     }
  53     printf("Nejčetnější je písmeno %c, s četností %d\n",'A'+i_max,pznaku[i_max]);
  54     return 0;
  55 }
`--> stáhnout

Licence Creative Commons Valid XHTML 1.0 Strict Valid CSS! Antispam.er.cz Blog: Tlapicka.net