Tyto stránky již nejsou udržovány. Obsah je postupně přesouván/aktualizován na adrese chytrosti.marrek.cz.

43/183

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

20110318-Fri-odkaz-na-fce.c
   1 /*
   2  * Soubor:  20110318-Fri-odkaz-na-fce.c
   3  * Datum:   18.03.2011 10:03
   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 #include <math.h>
  15 
  16 /* ***************    Makra    ******************** */
  17 #define ARREYC 1024
  18 
  19 /* ***************   Funkce    ******************** */
  20 
  21 double deg2rad(double deg)
  22 {
  23     return deg*M_PI/180;
  24 }
  25 
  26 double rad2rad(double rad)
  27 {
  28     return rad;
  29 }
  30 
  31 double cotg(double rad) 
  32 {
  33     return 1/tan(rad);
  34 }
  35 
  36 /****************************************************
  37  *               Hlavní program.
  38  ****************************************************/
  39 int main(int argc, char *argv[])
  40 {
  41 
  42     /* f_convert je odkaz na funkci, která přebírá double a vrací double */
  43     double (*f_convert)(double);    
  44     double (*f_gonio)(double);
  45     char line[ARREYC];
  46     double number, from, to, step;
  47     char choice[ARREYC];
  48     
  49     f_convert = deg2rad; 
  50 
  51     while ( printf(" >>> "), fgets(line, ARREYC, stdin) != NULL ) {
  52         if ( sscanf(line, "%s %lg %lg %lg", choice, &from, &to, &step) == 4 ) {
  53             ;
  54         } else if ( sscanf(line, "%s %lg", choice, &number) == 2 ) {
  55             if ( choice[0] == 's' ) 
  56                 f_gonio = sin;
  57             else if ( choice[0] == 'c')
  58                 f_gonio = cos;
  59             else if ( choice[0] == 't')
  60                 f_gonio = tan;
  61             else if ( choice[0] == 'o')
  62                 f_gonio = cotg;
  63             printf("%7.3F\n",f_gonio( f_convert(number) ));
  64         } else if ( sscanf(line, "%s", choice ) == 1 ) {
  65             if ( choice[0] == 'd') {
  66                 f_convert = deg2rad; 
  67             } else if ( strcmp(choice, "r") == 0 ) {
  68                 f_convert = rad2rad; 
  69             } else {
  70                 fprintf(stderr,"neplatný vstup\n");
  71             }
  72         }
  73     }
  74 
  75 
  76     return 0;
  77 }
`--> stáhnout

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