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: 20110415-Fri-smenarna.c
3 * Datum: 15.04.2011 08:16
4 * Autor: Marek Nožka, nozka <@t> spseol <d.t> cz
5 * Licence: GNU/GPL
6 * Úloha:
7 * Popis:
8 ****************************************************/
9 #define _ISOC99_SOURCE
10 #define _GNU_SOURCE
11 #include <stdio.h>
12 #include <string.h>
13 #include <stdbool.h>
14
15 /* *************** Makra ******************** */
16 #define DELKA 92
17
18 /* *************** Funkce ******************** */
19
20 typedef struct {
21 char mena[4];
22 float nakup;
23 float prodej;
24 float nasobek;
25 } Mena;
26
27 Mena listek[40];
28 int pListek = 0;
29
30 void pocitej(char mena[], char akce[], float castka)
31 {
32 /* hledám měnu */
33 int index;
34 for (index=0; index< pListek; index++) {
35 if ( strcmp(listek[index].mena, mena) == 0) {
36 break; // opustí cyklus
37 }
38 }
39
40 /* počítám částku */
41 if ( akce[0] == 'p') {
42 printf(" %f,- Kč\n", castka * listek[index].prodej);
43 } else {
44 printf(" %f,- Kč\n", castka * listek[index].nakup);
45 }
46 }
47
48 /****************************************************
49 * Hlavní program.
50 ****************************************************/
51 int main(int argc, char *argv[])
52 {
53 /* struct { */
54 /* char mena[4]; */
55 /* float nakup; */
56 /* float prodej; */
57 /* float nasobek;*/
58 /* } listek[40]; */
59 /* */
60 /* listek[0].nakup = 29.80; */
61 /* printf(" %.0f\n",listek[0].nakup);*/
62 /* strcpy(listek[0].mena,"USD"); */
63 /* printf(" %s\n",listek[0].mena); */
64
65
66 char radek[DELKA];
67
68 FILE *soubor;
69 if ( ( soubor = fopen("kurzovni-listek.txt", "r") ) == NULL ) {
70 perror("Nastala chyba");
71 return 1;
72 }
73
74 while ( fgets(radek, DELKA, soubor) != NULL ) {
75 if ( sscanf(radek,"%s%f%f%f",
76 listek[pListek].mena,
77 &listek[pListek].nasobek,
78 &listek[pListek].nakup,
79 &listek[pListek].prodej) == 4 )
80 {
81 pListek++;
82 }
83 }
84 fclose(soubor);
85
86 for (int i=0; i<pListek; i++) {
87 printf("%s %4.0f %8.3f %8.3f\n",
88 listek[i].mena,
89 listek[i].nasobek,
90 listek[i].nakup,
91 listek[i].prodej);
92 }
93
94 char mena[4];
95 char akce[4];
96 float castka;
97 while ( fgets(radek, DELKA, stdin) != NULL ) {
98 if ( sscanf(radek,"%s%s%f",mena,akce, &castka) == 3) {
99 pocitej(mena,akce,castka);
100 } else {
101 puts(">>> Neplatný vstup");
102 }
103 }
104 return 0;
105 }