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

20110107-Fri-prave-dvakrat-S4.c
   1 /*
   2  * Soubor:  20110107-Fri-prave-dvakrat-S4.c
   3  * Datum:   07.01.2011 10:04
   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 ARREYC 20
  14 
  15 /* *************** Globální proměnné  ************* */
  16 
  17 /* ***************   Funkce    ******************** */
  18 
  19 /* přidá prvek do pole hotovo */
  20 void pridej(int prvek, int arr[], int *hotovop)
  21 {
  22     arr[*hotovop] = prvek;
  23     (*hotovop)++;
  24 }
  25 
  26 /* kontroluje zda je prvek v poli hotovo
  27  * pokud ano vrátí 1 (true )
  28  * pokud ne vrátí 0 (false) */
  29 int kontroluj(int prvek, int arrc, int arr[])
  30 {
  31     for (int i = 0; i < arrc; i++) {
  32         if (arr[i] == prvek) {
  33             return 1;           // hurá, našel jsem, okamžitě končím
  34         }
  35     }
  36     /* nic jsem nenašel */
  37     return 0;
  38 }
  39 
  40 /****************************************************
  41  *               Hlavní program.
  42  ****************************************************/
  43 int main(void)
  44 {
  45     int pole[ARREYC];
  46     int hotovo[ARREYC];
  47     int hotovop;
  48 
  49     hotovop = 0;
  50 
  51     /* naplníme pole náhodnými čísly */
  52     for (int i = 0; i < ARREYC; i++) {
  53         pole[i] = rand() % 21;
  54     }
  55     /*  pole na obrazovku   */
  56     for (int i = 0; i < ARREYC; i++) {
  57         printf("%d ", pole[i]);
  58     }
  59     putchar('\n');
  60 
  61     /* počítám prvky, které jsou právě dvakrát */
  62     for (int i = 0; i < ARREYC; i++) {
  63         /* podívám jestli už jsem toto číslo nepočítal */
  64         if (kontroluj(pole[i], ARREYC, pole)) {
  65             //printf("### %d\n",i);
  66             continue;           /* přeskočí zbytek těla cyklu a pokračuje další obrátkou */
  67         }
  68         /* počítám */
  69         int pocet = 0;
  70         for (int j = i; j < ARREYC; j++) {
  71             if (pole[j] == pole[i]) {
  72                 pocet++;
  73             }
  74         }
  75         if (pocet == 2) {
  76             printf("%d ", pole[i]);
  77         }
  78 
  79         /* znovu už ho počítat nebudu */
  80         pridej(pole[i],hotovo,&hotovop);
  81     }
  82     putchar('\n');
  83 
  84     return 0;
  85 }
`--> stáhnout

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