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-smenar.c
   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 }
`--> stáhnout

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