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

20110117-Mon-dvakrat.c
   1 /*
   2  * Soubor:  20110117-Mon-dvakrat.c
   3  * Datum:   17.01.2011 10:13
   4  * Autor:   Marek Nožka, nozka <@t> spseol <d.t> cz
   5  * Licence: GNU/GPL 
   6  * Úloha: 
   7  * Popis:   
   8  ****************************************************/
   9 #include <stdio.h>
  10 #include <stdlib.h>
  11 
  12 /* ***************    Makra    ******************** */
  13 #define POLEC 20
  14 
  15 /* ***************   Funkce    ******************** */
  16 
  17 int pole[POLEC];
  18 int hotovo[POLEC];
  19 int hotovoc;
  20 
  21 /* Funkce naplní pole náhodnými čísly */
  22 void generuj(void) 
  23 {
  24     for(int i=0; i<POLEC; i++) {
  25         pole[i] = rand() % 10;
  26     }
  27 }
  28 
  29 /* Funkce vypíše pole na obrazovku */
  30 void ukaz(void) 
  31 {
  32     for(int i=0; i<POLEC; i++) {
  33         printf("%d ",pole[i]) ;
  34     }
  35     putchar('\n');
  36 }
  37 
  38 /* Funkce přidá číslo do pole hotovo */
  39 void pridej(int cislo) 
  40 {
  41     hotovo[hotovoc] = cislo;
  42     hotovoc++;
  43 }
  44 
  45 /* Funkce hledá číslo v poli hotovo, pokud tam je vrátí TRUE, 
  46  * pokud ne vrátí FALSE.                                     */
  47 int hledej(int cislo)
  48 {
  49     int i=0;
  50     while (i<hotovoc) {
  51         if ( hotovo[i] == cislo ) {
  52             return 1; // okamžitě ukončí funkci 
  53         }
  54         i++;
  55     }
  56     return 0;
  57 }
  58 
  59 /****************************************************
  60  *               Hlavní program                     *
  61  ****************************************************/
  62 int main(void) {
  63     int pocet;
  64 
  65     generuj();
  66     ukaz();
  67     hotovoc = 0;
  68 
  69     /* procházím pole a počítám jednotlivá čísla */
  70     for (int i=0; i<POLEC; i++) {
  71         if ( ! hledej(pole[i]) ) { // počítám ho, jen pokud jsem ho ještě nepočítal
  72             pocet = 0;
  73             for (int j=i; j<POLEC; j++) {
  74                 if ( pole[i] == pole[j] ) {
  75                     pocet++;
  76                 }
  77             }
  78             pridej(pole[i]); // znovu už ho počítat nechci  
  79             if ( pocet == 2) {
  80                 printf("%d ",pole[i]);
  81             }
  82         }
  83     }
  84     putchar('\n');
  85     return 0;
  86 }
`--> stáhnout

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