Advertisement
thebys

Ukol #3 C IB001/19

Nov 28th, 2013
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.71 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h> //need this.
  4. //program vypise 3 posloupnosti cisel.
  5. //=ukol 3, zadani je v ISu.
  6. //Coded by Tomas Biheler 2013
  7.  
  8. void vyplnPole(unsigned long long int pole[], int velikostPole, unsigned long long int (*fillFunction)(int)) //hezky pekne...
  9. {
  10.     //vyplni pole podle argumentu...
  11.     for(int i = 0; i < velikostPole; ++i)
  12.     {
  13.         pole[i] = fillFunction(i);
  14.         //husty
  15.     }
  16. }
  17. void vypisPole(unsigned long long int pole[], int velikostPole) //vypise pole jako radek, na sirokym CLI funguje dobre.
  18. {
  19.     int delka = 0;
  20.     for(int i = 0; i < velikostPole; ++i)
  21.     {
  22.  
  23.         if(pole[i] != 0)
  24.         {
  25.             delka = floor (log10 (pole[i])) + 1; //pouziti abs() kolidovalo s max. delkou pouzivanych cisel...
  26.             //... pouzivame sice dlouha, ale za to jen kladna, takze whatever...
  27.         }
  28.         else
  29.         {
  30.             delka = 1;
  31.         }
  32.         printf("%llu", pole[i], delka);
  33.         for(int i = delka; i <= 20; ++i) //checked to work.
  34.         {
  35.             printf(" "); //vyplnovaci znak
  36.         }
  37.     }
  38.     printf("\n");
  39. }
  40. unsigned long long int countARG(int argument) //vraci hodnotu argumentu
  41. {
  42.     return (unsigned long long int)argument;
  43. }
  44. unsigned long long int countFACT(int argument) //vraci argument!
  45. {
  46.     unsigned long long int faktorial = 1;
  47.     for(unsigned long long int i = argument; 0 < i; --i)
  48.     {
  49.         faktorial *= i;
  50.     }
  51.     return faktorial;
  52. }
  53. unsigned long long int countFIBO(int argument) // vraci F[argument]
  54. {
  55.     unsigned long long int FIBO = 0;
  56.     int prvni = 0;
  57.     int druhy = 1;
  58.     int dalsi;
  59.     for (int i = 0; i < argument; ++i)
  60.     {
  61.         if ( i < 0 )
  62.         {
  63.             dalsi = i;
  64.         }
  65.         else
  66.         {
  67.             dalsi = prvni + druhy;
  68.             prvni = druhy;
  69.             druhy = dalsi;
  70.         }
  71.     }
  72.     FIBO = dalsi;
  73.     return FIBO;
  74. }
  75. int main() //ridi beh programu.
  76. {
  77.     //deklarace poli...
  78.     int velikostPole = 21; // 0 - 20 - presne podle zadani...
  79.     //zvetsenim hodnoty se muze rozjet vypis, neni na vic nez F[20] nastavenej!
  80.     unsigned long long int normalPole[velikostPole];
  81.     unsigned long long int fiboPole[velikostPole];
  82.     unsigned long long int factPole[velikostPole];
  83.     //aby se vsechno veslo... Slo by setrit pamet na ukor pretezovani metod...
  84.     //vypocty a filling...
  85.     vyplnPole(normalPole, velikostPole, &countARG);
  86.     vyplnPole(factPole, velikostPole, &countFACT);
  87.     vyplnPole(fiboPole, velikostPole, &countFIBO);
  88.     //vypis (lepsi poradi <- zadani)
  89.     vypisPole(fiboPole, velikostPole);
  90.     vypisPole(factPole, velikostPole);
  91.     vypisPole(normalPole, velikostPole);
  92.     return 0;
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement