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

20110211-Fri-dprc.c
   1 /*
   2  * Soubor:  20110211-Fri-dprc.c
   3  * Datum:   11.02.2011 08:10
   4  * Autor:   Marek Nožka, nozka <@t> spseol <d.t> cz
   5  * Licence: GNU/GPL 
   6  * Úloha:  Jak psát a používat funkce
   7  ****************************************************/
   8 
   9 #define _GNU_SOURCE
  10 
  11 #include <stdio.h>
  12 #include <math.h>
  13 #include <stdbool.h>
  14 
  15 /* ***************    Makra    ******************** */
  16 //#define ARREYC 1024
  17 
  18 /* ************* Funkční prototypy **************** */
  19 double f_mezni(double r, double c);
  20 void vymena(double *x, double *y);
  21 bool dprc(double r, double c, double f, double *modul, double *faze);
  22 
  23 /****************************************************
  24  *               Hlavní program.
  25  ****************************************************/
  26 int main(void)
  27 {
  28     double vysledek;
  29 
  30     double odpor = 1000;
  31     vysledek = f_mezni(odpor, 33e-9);
  32     printf("%g\n", vysledek);
  33 
  34     double kapacita = 33e-9;
  35     printf("%g %g\n", odpor, kapacita);
  36     vymena(&odpor, &kapacita);
  37     printf("%g %g\n", odpor, kapacita);
  38 
  39 
  40     double aPrenos;
  41     double fPrenos;
  42     if (dprc(1000, 33e-9, 4822.8, &aPrenos, &fPrenos)) {
  43         printf("%g %g\n", aPrenos ,fPrenos );
  44     } else {
  45         fprintf(stderr,"spatne hodnoty R,C,f\n");
  46         return 1;
  47     }
  48 
  49     return 0;
  50 }
  51 
  52 /* ***************   Funkce    ******************** */
  53 
  54 /* výpočet mezního kmitočtu */
  55 double f_mezni(double r, double c)
  56 {
  57 /*    double f0;
  58     f0 = 1/(2*PI*r*c);
  59     return f0;*/
  60     return 1 / (2 * M_PI * r * c);
  61 }
  62 
  63 /* vymění x a y */
  64 void vymena(double *x, double *y)
  65 {
  66     double kybl = *x;
  67     *x = *y;
  68     *y = kybl;
  69 }
  70 
  71 
  72 /** 
  73  * Výpočet přenosu dolní propusti RC
  74  *
  75  *        | -jXc |             Xc 
  76  * Au = ------------- = ------------------
  77  *       | R - jXc |     sqrt( R² + Xc² )
  78  *                                                     Xc
  79  *  φ = arg( -jXc ) - arg( R - jXc ) = -90° + arctg( ----- )
  80  *                                                     R       
  81  *                                                            */
  82 bool dprc(double r, double c, double f, double *modul, double *faze)
  83 {
  84     if (r <= 0 || c <= 0 || f <= 0) {
  85         return false;           // vyskočí z funkce
  86     }
  87 
  88     double Xc = 1 / (2 * M_PI * f * c);
  89     *modul = Xc / (sqrt(r * r + Xc * Xc));
  90     *faze = -90 + 180 * (atan(Xc / r)) / M_PI;
  91 
  92     return true;
  93 }
`--> stáhnout

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