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

20120202-Thu-mandelbrot.c
   1 /*
   2  * Soubor:  20120202-Thu-mandelbrot.c
   3  * Datum:   02.02.2012 08:21
   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 <complex.h>
  13 
  14 /* ***************    Makra    ******************** */
  15 #define SLOUPCU 1600
  16 #define RADKU 1200
  17 
  18 
  19 char mandel(double x,double y)
  20 {
  21     unsigned int hloubka = 128;
  22     double complex C = x + y*I;
  23     double complex Z = 0;
  24     unsigned short int n = 0;
  25     while ( n < hloubka && cabs(Z)< 2 ) {
  26         n++;
  27         Z = Z*Z + C;
  28     }
  29     if (n <hloubka) {
  30         return '-'; // do množiny nepatří
  31     } else {
  32         return '+'; // do množiny patří
  33     }
  34 
  35 
  36 
  37 }
  38 
  39 /****************************************************
  40  *               Hlavní program.
  41  ****************************************************/
  42 int main(void)
  43 {
  44     int i, j;
  45     int r, s;
  46     double zoom = 1;
  47     double x0 = -0;
  48     double y0 = 0;
  49     char matice[RADKU][SLOUPCU];
  50 
  51 /* - je černá 
  52  * + je bílá */
  53 
  54     /* naplním matici daty */
  55     unsigned int MIN = SLOUPCU > RADKU ? SLOUPCU : RADKU;
  56     for (r = 0; r < RADKU; r++) {
  57         for (s = 0; s < SLOUPCU; s++) {
  58             matice[r][s] = 
  59                 mandel(2*((double)s-SLOUPCU/2.0)/(MIN*zoom)+x0, 
  60                        2*((double)r-  RADKU/2.0)/(MIN*zoom)+y0 );
  61         }
  62     }
  63 
  64 
  65 //////////////////////////////////////////////////////////////
  66     /* uložím matici do obrázku */
  67     FILE *soubor;
  68     soubor = fopen("matice.xpm", "w");
  69     fprintf(soubor, "! XPM2\n%d %d 2 1\n", SLOUPCU, RADKU);
  70     fprintf(soubor, "- c #000000\n");
  71     fprintf(soubor, "+ c #ffffff\n");
  72     for (i = 0; i < RADKU; i++) {
  73         for (j = 0; j < SLOUPCU; j++) {
  74             fputc(matice[i][j], soubor);
  75         }
  76         fputc('\n', soubor);
  77     }
  78 
  79     fclose(soubor);
  80 
  81 
  82     return 0;
  83 }
`--> stáhnout

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