Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2014
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.96 KB | None | 0 0
  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. #include <ctype.h>
  6. #include <math.h>
  7.  
  8. #define ITERACE 13
  9. #define DEC 10
  10. #define MAX_ARG 1.4
  11. #define MAX_C 100.0
  12.  
  13. void fhelp()
  14. {
  15.  
  16.     printf ("--help vytiskne strucnou napovedu.\n\n"
  17.  
  18.             "--tan srovna vypocty tan uhlu mezi vypoctem tan z matematické knihovny,\n"
  19.             "a tan pomoci Taylorova polynomu a zretezeneho zlomku v iteracich od N do M.\n\n"
  20.  
  21.             "-m zmeri a vypocita vzdalenost. Uhly jsou dany v radianech. Kdyz je zadan uhel B"
  22.             "program vypocita a vypise i vysku mereneho objektu.\n\n"
  23.  
  24.             "-c nastavuje vysku mericiho pristroje c pro vypocet \nimplicitni vyska je 1.5 metru.\n"
  25.            );
  26. }
  27.  
  28. //**********************************************************************************
  29.  
  30. double taylor_tan(double *x, int n)
  31. {
  32.     long long int citatel[] = {1, 1, 2, 17, 62, 1382, 21844, 929569, 6404582, 443861162, 18888466084,
  33.                                113927491862, 58870668456604};
  34.  
  35.     long long int jmenovatel[] = {1, 3, 15, 315, 2835, 155925, 6081075, 638512875, 10854718875,
  36.                                   1856156927625, 194896477400625, 49308808782358125, 3698160658676859375};
  37.     //double vysledek = (*x);
  38.     //double xx = ((*x) * (*x));
  39.     double result = 0.0;
  40.     double a;
  41.  
  42.     //printf("%d\n", citatel[1]);
  43.     //printf("%e\n", xx);
  44.     //printf("%e\n", vysledek);
  45.     //printf("%d\n", citatel[1]);
  46.  
  47.     for (int i = 0; i < ITERACE-1; i++)
  48.     {
  49.         a = *x;
  50.         result += a * citatel[i]/jmenovatel[i];
  51.         //printf("%lld\n", citatel[i]);
  52.         //printf("%lld\n\n", jmenovatel[i]);
  53.         //long long lli, llj;
  54.  
  55.         //lli = citatel[i];
  56.         //llj = jmenovatel[i];
  57.  
  58.         //a =(lli/llj);
  59.         printf("%g\n\n",a);
  60.         //vysledek =vysledek * (citatel[i] / jmenovatel[i]);
  61.         //printf("%e\n", vysledek);
  62.     }
  63.  
  64.     //return vysledek;
  65. }
  66.  
  67. //**********************************************************************************
  68.  
  69. double cfrac_tan(double * x, unsigned int n) //pozor prepsat na double
  70. {
  71.     printf("%g\n", *x);
  72.     printf("%g\n", *x);
  73.     return EXIT_SUCCESS;
  74. }
  75.  
  76. //**********************************************************************************
  77.  
  78. int ftangens(double *arg_A, int *arg_N, int *arg_M)
  79. {
  80.  
  81.     for (int iterace = 1; iterace <= *arg_M; iterace++)
  82.     {
  83.         if (*arg_N <= iterace)
  84.         {
  85.             printf("iterace ");
  86.             printf("math ");
  87.             printf("taylor + (math - taylor) ");
  88.             printf("cfrac + (math - cfrac)\n");
  89.         }
  90.  
  91.  
  92.     }
  93.  
  94.     return EXIT_SUCCESS;
  95. }
  96.  
  97. //**********************************************************************************************************************************
  98. //**********************************************************************************************************************************
  99.  
  100. int main(int argc, char *argv[])
  101. {
  102.     if ((argc > 1) && (argc < 7))
  103.     {
  104.         char * ptr = NULL;
  105.  
  106. //**********************************************************************************
  107.         if (((strcmp(argv[1],"--help")) == 0))
  108.         {
  109.             fhelp();
  110.         }
  111. //**********************************************************************************
  112.         else if (((strcmp(argv[1],"--tan")) == 0) && (argc == 5))
  113.         {
  114.             double * arg_H, double_H;
  115.             int * arg_N, * arg_M, int_N, int_M;
  116.  
  117.             arg_H = &double_H;
  118.             arg_N = &int_N;
  119.             arg_M = &int_M;
  120.  
  121.             *arg_H = strtod(argv[2], &ptr);
  122.             if (((*ptr) == 0) && (0.0 < (*arg_H) && (*arg_H <= MAX_ARG)))
  123.             {
  124.                *arg_N = strtol(argv[3], &ptr, DEC);
  125.                if (((*ptr) == 0) && (0 < (*arg_N) && (*arg_N < ITERACE)))
  126.                {
  127.                     *arg_M = strtol(argv[4], &ptr, DEC);
  128.                     if (((*ptr) == 0) && ((0 < *arg_M) && (*arg_M < ITERACE)))
  129.                     {
  130.                      //   printf("%g\n", double_H);
  131.                         double d = taylor_tan(arg_H, ITERACE);
  132.  
  133.                     //    printf("%.10e", d+1);
  134.                     //ftangens(arg_A, arg_N, arg_M);
  135.                     }
  136.                     else
  137.                     {
  138.                         printf("chyba");
  139.                         return EXIT_FAILURE;
  140.                     }
  141.                }
  142.                else
  143.                {
  144.                     printf("chyba");
  145.                     return EXIT_FAILURE;
  146.                }
  147.             }
  148.             else
  149.             {
  150.                 printf("chyba");
  151.                 return EXIT_FAILURE;
  152.             }
  153.         }
  154. //**********************************************************************************
  155.         else if (((strcmp(argv[1],"-m")) == 0) && ((argc == 3) || (argc == 4)))
  156.         {
  157.             double * arg_A, double_A;
  158.             arg_A = &double_A;
  159.  
  160.             *arg_A = strtod(argv[2], &ptr);
  161.             if (((*ptr) == 0) && (0.0 < (*arg_A) && (*arg_A <= MAX_ARG)))
  162.             {
  163.                 cfrac_tan(arg_A, ITERACE); //bacha yde musi bzt double, zmenit float na double
  164.  
  165.                 if (argc == 4)
  166.                 {
  167.                     double * arg_B, double_B;
  168.                     arg_B = &double_B;
  169.  
  170.                     *arg_B = strtod(argv[3], &ptr);
  171.                     if (((*ptr) == 0) && (0.0 < (*arg_B) && (*arg_B <= MAX_ARG)))
  172.                     {
  173.                         cfrac_tan(arg_B, ITERACE);
  174.                     }
  175.                     else printf("Chyba");
  176.                 }
  177.  
  178.             }
  179.             else printf("Chyba");
  180.         }
  181. //**********************************************************************************
  182.         else if (((strcmp(argv[1],"-c")) == 0) && ((strcmp(argv[3],"-m")) == 0) && ((argc == 5) || (argc == 6)))
  183.         {
  184.             double * arg_C, double_C, * arg_A, double_A;
  185.             arg_A = &double_A;
  186.             arg_C = &double_C;
  187.  
  188.             *arg_C = strtod(argv[2], &ptr);
  189.             if (((*ptr) == 0) && (0.0 < (*arg_C) && (*arg_C <= MAX_C)))
  190.             {
  191.                 *arg_A = strtod(argv[4], &ptr);
  192.                 if (((*ptr) == 0) && (0.0 < (*arg_A) && (*arg_A <= MAX_ARG)))
  193.                 {
  194.                     cfrac_tan(arg_C, ITERACE);
  195.                     cfrac_tan(arg_A, ITERACE);
  196.                     if (argc == 6)
  197.                     {
  198.                         double * arg_B, double_B;
  199.                         arg_B = &double_B;
  200.  
  201.                         *arg_B = strtod(argv[5], &ptr);
  202.                         if (((*ptr) == 0) && (0.0 < (*arg_B) && (*arg_B <= MAX_ARG)))
  203.                         {
  204.                             cfrac_tan(arg_B, ITERACE);
  205.                         }
  206.                         else printf("Chyba");
  207.                     }
  208.                 }
  209.                 else printf("Chyba");
  210.             }
  211.             else printf("Chyba");
  212.         }
  213.         else printf("spatne argumenty");
  214.     }
  215.     else printf("spatne argumenty");
  216.     return 0;
  217. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement