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-smenar.c
3 * Datum: 15.04.2011 10:01
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 /* *************** Makra ******************** */
15 #define ARREYC 1024
16 /* *************** Funkce ******************** */
17
18 typedef struct {
19 char mena[4];
20 float nakup;
21 float prodej;
22 float nasobek;
23 } Mena;
24
25 Mena listek[40];
26 int pocetMen = 0;
27
28
29 void pocitej(char mena[], char akce[], float castka)
30 {
31 /* najdeu měnu */
32 int i=0;
33 for ( i=0; i < pocetMen; i++) {
34 if ( strcmp(listek[i].mena,mena) == 0) {
35 if (akce[0] == 'n') {
36 printf(" %.0f", castka * listek[i].nakup );
37 } else {
38 printf(" %.0f", castka * listek[i].prodej );
39 }
40 break; // vyskočí z cyklu
41 }
42 }
43 /* vypočet, výpis */
44 }
45
46 /****************************************************
47 * Hlavní program.
48 ****************************************************/
49 int main(void)
50 {
51
52 /* struct { */
53 /* char mena[4]; */
54 /* float nakup; */
55 /* float prodej; */
56 /* float nasobek;*/
57 /* } listek[40]; */
58 #define DELKA 92
59 char radek[DELKA];
60
61 FILE *soubor;
62
63 if ((soubor = fopen("kurzovni-listek.txt", "r")) == NULL) {
64 perror("Chyba");
65 return 1;
66 }
67
68 while (fgets(radek, DELKA, soubor) != NULL) {
69 int i = 0;
70 while (radek[i++] != '\0') {
71 if (radek[i] == ',') {
72 radek[i] = '.';
73 }
74 }
75 if (sscanf(radek, "%s%f%f%f",
76 listek[pocetMen].mena,
77 &listek[pocetMen].nasobek,
78 &listek[pocetMen].nakup,
79 &listek[pocetMen].prodej) == 4) {
80 pocetMen++;
81 }
82 }
83
84 fclose(soubor);
85
86 for (int i = 0; i < pocetMen; i++) {
87 printf("%3d) %s %4.0f %8.3f %8.3f\n",
88 i, listek[i].mena, listek[i].nasobek,
89 listek[i].nakup, listek[i].prodej);
90 }
91
92 char mena[DELKA/2];
93 char akce[DELKA/2];
94 float castka;
95 while ( fgets(radek, DELKA, stdin) != NULL) {
96 if ( sscanf(radek,"%s%s%f",mena,akce, &castka) == 3 ) {
97 pocitej(mena, akce, castka);
98 } else {
99 puts(">>>> Chybný vstup");
100 }
101 }
102
103
104
105 return 0;
106 }