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

20110415-Fri-smenarna.c
   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 }
`--> stáhnout

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