Advertisement
BlueBear

HviezdickovanieUtvarov.c

Oct 11th, 2012
442
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.27 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>  // potrebne najma kvoli funkcii abs()
  3.  
  4. int main(void)
  5. {
  6.   int sirka, vyska, velk, opak, i, py, y, px, x;
  7.   scanf("%d", &opak);          // nacitanie prveho vstupu - poctu obrazcov
  8.   for (i=0; i<opak; i++)   // cyklus pre realizovanie jednotlivych obrazcov
  9.   {
  10.  
  11.     scanf("%d %d %d", &vyska, &sirka, &velk); // nacitanie vstupov o obrazci
  12.  
  13.     if (velk%2 == 0) // osetrenie vstupov; mozeme sem pridat aj dalsie podmienky, napr. na premenne vyska, sirka, ...
  14.       return 1;
  15.  
  16.     int stred = velk/2; // stred vyjadruje suradnicu osi symetrie zakladneho vzoru
  17.                         // netreba +1 pretoze indexujem od nuly
  18.  
  19.     for (py = 0; py < vyska; py++) // cyklus realizujuci opakovanie obrazcov pod seba
  20.     {
  21.       for (y = 0; y < velk; y++)   // cyklus realizujuci vypis jednotlivych riadkov zakladneho vzoru
  22.       {
  23.         for (px = 0; px < sirka; px++) // cyklus realizujuci opakovanie obrazcov vedla seba
  24.         {
  25.           for (x = 0; x < velk; x++)  // cyklus na prechod jedneho riadku, v ramci zakladneho vzoru
  26.           {
  27.             // podmienka vyjadrujuca zakladny vzor
  28.             // V tomto vzore demonstrujem viacere zakladne vzory,
  29.             // k pouzitiu je nutne aktualnu podmienku zakomentovat, a odkomentovat prislusnu
  30.             // VZDY TEDA MUSI BYT AKTIVNA - ODKOMENTOVANA LEN JEDINA PODMIENKA
  31.  
  32.             // Vsimnite si, ze pre vyraz == sa definuje iba urcita 'ciara',
  33.             // zatial co pri nerovnoasti >, >=, <, <= predstavuje plochu
  34.  
  35.             // vzory ktore su vyrazne symetricke, sa daju velmi elegantne realizovat
  36.             // aj pouzitim absolutnej hodnoty, hoci je to casto narocne na predstavu
  37.             if (abs(x-stred)+abs(y-stred)==stred)  // uloha pica ('kosostvorec') z posledneho testu
  38.  
  39.             // if (((px + py)%2) == 0)  // SACHOVNICA
  40.             // if (abs(x-stred)+abs(y-stred)<=stred)
  41.             // if (abs(x-stred)+abs(y-stred)>stred)
  42.             // if (abs(x-stred)+abs(y-stred)>stred-2)
  43.             // if (abs(x-stred)<=abs(y-stred))  // 'presypacie hodiny'
  44.  
  45.             // rozne ciarky a plochy
  46.             // if (x==y) // usecka - spatne lomitko '\'
  47.             // if (x<=y)
  48.             // if (x+y < velk)  // trojuholnikova plocha
  49.             // if (x+y == velk-1)  // usecka - bezne lomitko /
  50.  
  51.             // Spajanie podmienok pomocou jednoduchych logickych operatorov && a ||
  52.             // if ((x+y == velk-1) || (x==y))  // 'X'
  53.             // if ((x<=y) && (x+y < velk)) // lava trojuholnikova plocha
  54.  
  55.             // Modulo (zvysok po deleni) je vhodne vyuzit, ak chcem 'rovnomerne' bodkami vyplnit nejaku oblast
  56.             // if ((x+y)%2)
  57.             // if (((x+y)%3) == 1)
  58.  
  59.             // KRUZNICA A KRUH
  60.             // if ((1.0*((x-stred)*(x-stred)+(y-stred)*(y-stred)) > 0.95*stred*stred)
  61.             //   && (1.0*((x-stred)*(x-stred)+(y-stred)*(y-stred)) < 1.05*stred*stred)) // kruznica
  62.             // if (1.0*((x-stred)*(x-stred)+(y-stred)*(y-stred)) < 1.1*stred*stred) // kruh;
  63.             // vyrazi x-stred   a y-stred reprezentuju vlastne posun pociatku suradnicovej sustavy do stredu obrazku
  64.               printf("*");
  65.             else
  66.               printf(".");
  67.           }
  68.         }
  69.         printf("\n");
  70.       }
  71.     }
  72.   }
  73.   return 0;
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement