Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <ctype.h>
- #include <math.h>
- #define ITERACE 13
- #define DEC 10
- #define MAX_ARG 1.4
- #define MAX_C 100.0
- void fhelp()
- {
- printf ("--help vytiskne strucnou napovedu.\n\n"
- "--tan srovna vypocty tan uhlu mezi vypoctem tan z matematické knihovny,\n"
- "a tan pomoci Taylorova polynomu a zretezeneho zlomku v iteracich od N do M.\n\n"
- "-m zmeri a vypocita vzdalenost. Uhly jsou dany v radianech. Kdyz je zadan uhel B"
- "program vypocita a vypise i vysku mereneho objektu.\n\n"
- "-c nastavuje vysku mericiho pristroje c pro vypocet \nimplicitni vyska je 1.5 metru.\n"
- );
- }
- //**********************************************************************************
- double taylor_tan(double *x, int n)
- {
- long long int citatel[] = {1, 1, 2, 17, 62, 1382, 21844, 929569, 6404582, 443861162, 18888466084,
- 113927491862, 58870668456604};
- long long int jmenovatel[] = {1, 3, 15, 315, 2835, 155925, 6081075, 638512875, 10854718875,
- 1856156927625, 194896477400625, 49308808782358125, 3698160658676859375};
- //double vysledek = (*x);
- //double xx = ((*x) * (*x));
- double result = 0.0;
- double a;
- //printf("%d\n", citatel[1]);
- //printf("%e\n", xx);
- //printf("%e\n", vysledek);
- //printf("%d\n", citatel[1]);
- for (int i = 0; i < ITERACE-1; i++)
- {
- a = *x;
- result += a * citatel[i]/jmenovatel[i];
- //printf("%lld\n", citatel[i]);
- //printf("%lld\n\n", jmenovatel[i]);
- //long long lli, llj;
- //lli = citatel[i];
- //llj = jmenovatel[i];
- //a =(lli/llj);
- printf("%g\n\n",a);
- //vysledek =vysledek * (citatel[i] / jmenovatel[i]);
- //printf("%e\n", vysledek);
- }
- //return vysledek;
- }
- //**********************************************************************************
- double cfrac_tan(double * x, unsigned int n) //pozor prepsat na double
- {
- printf("%g\n", *x);
- printf("%g\n", *x);
- return EXIT_SUCCESS;
- }
- //**********************************************************************************
- int ftangens(double *arg_A, int *arg_N, int *arg_M)
- {
- for (int iterace = 1; iterace <= *arg_M; iterace++)
- {
- if (*arg_N <= iterace)
- {
- printf("iterace ");
- printf("math ");
- printf("taylor + (math - taylor) ");
- printf("cfrac + (math - cfrac)\n");
- }
- }
- return EXIT_SUCCESS;
- }
- //**********************************************************************************************************************************
- //**********************************************************************************************************************************
- int main(int argc, char *argv[])
- {
- if ((argc > 1) && (argc < 7))
- {
- char * ptr = NULL;
- //**********************************************************************************
- if (((strcmp(argv[1],"--help")) == 0))
- {
- fhelp();
- }
- //**********************************************************************************
- else if (((strcmp(argv[1],"--tan")) == 0) && (argc == 5))
- {
- double * arg_H, double_H;
- int * arg_N, * arg_M, int_N, int_M;
- arg_H = &double_H;
- arg_N = &int_N;
- arg_M = &int_M;
- *arg_H = strtod(argv[2], &ptr);
- if (((*ptr) == 0) && (0.0 < (*arg_H) && (*arg_H <= MAX_ARG)))
- {
- *arg_N = strtol(argv[3], &ptr, DEC);
- if (((*ptr) == 0) && (0 < (*arg_N) && (*arg_N < ITERACE)))
- {
- *arg_M = strtol(argv[4], &ptr, DEC);
- if (((*ptr) == 0) && ((0 < *arg_M) && (*arg_M < ITERACE)))
- {
- // printf("%g\n", double_H);
- double d = taylor_tan(arg_H, ITERACE);
- // printf("%.10e", d+1);
- //ftangens(arg_A, arg_N, arg_M);
- }
- else
- {
- printf("chyba");
- return EXIT_FAILURE;
- }
- }
- else
- {
- printf("chyba");
- return EXIT_FAILURE;
- }
- }
- else
- {
- printf("chyba");
- return EXIT_FAILURE;
- }
- }
- //**********************************************************************************
- else if (((strcmp(argv[1],"-m")) == 0) && ((argc == 3) || (argc == 4)))
- {
- double * arg_A, double_A;
- arg_A = &double_A;
- *arg_A = strtod(argv[2], &ptr);
- if (((*ptr) == 0) && (0.0 < (*arg_A) && (*arg_A <= MAX_ARG)))
- {
- cfrac_tan(arg_A, ITERACE); //bacha yde musi bzt double, zmenit float na double
- if (argc == 4)
- {
- double * arg_B, double_B;
- arg_B = &double_B;
- *arg_B = strtod(argv[3], &ptr);
- if (((*ptr) == 0) && (0.0 < (*arg_B) && (*arg_B <= MAX_ARG)))
- {
- cfrac_tan(arg_B, ITERACE);
- }
- else printf("Chyba");
- }
- }
- else printf("Chyba");
- }
- //**********************************************************************************
- else if (((strcmp(argv[1],"-c")) == 0) && ((strcmp(argv[3],"-m")) == 0) && ((argc == 5) || (argc == 6)))
- {
- double * arg_C, double_C, * arg_A, double_A;
- arg_A = &double_A;
- arg_C = &double_C;
- *arg_C = strtod(argv[2], &ptr);
- if (((*ptr) == 0) && (0.0 < (*arg_C) && (*arg_C <= MAX_C)))
- {
- *arg_A = strtod(argv[4], &ptr);
- if (((*ptr) == 0) && (0.0 < (*arg_A) && (*arg_A <= MAX_ARG)))
- {
- cfrac_tan(arg_C, ITERACE);
- cfrac_tan(arg_A, ITERACE);
- if (argc == 6)
- {
- double * arg_B, double_B;
- arg_B = &double_B;
- *arg_B = strtod(argv[5], &ptr);
- if (((*ptr) == 0) && (0.0 < (*arg_B) && (*arg_B <= MAX_ARG)))
- {
- cfrac_tan(arg_B, ITERACE);
- }
- else printf("Chyba");
- }
- }
- else printf("Chyba");
- }
- else printf("Chyba");
- }
- else printf("spatne argumenty");
- }
- else printf("spatne argumenty");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement