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: 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 }