Hrani na pisecku
[BETON.git] / knihovna.c
blobc1720bd90a1d506fef5860ec4d4c34fb887e84e0
1 /**************************************************************************** *
2 * nazev projektu: BETON *
3 * soubor: knihovna.c *
4 * autor: Vojtìch ©im¹a xsimsa01 *
5 * *
6 * popis: knihovna funkcí *
7 * *
8 ******************************************************************************/
9 /**
10 * @file knihovna.c
12 * @brief knihovna funkcí
13 * @author Vojtìch ©im¹a (xsimsa01)
15 #include <math.h>
16 #include <float.h>
17 const double MAX_FACTBASE=150; /** maximalni hodnota zakladu pro vypocet faktorialu */
19 /**
20 * Struktura obsahující hodnoty parametrù pøíkazové øádky.
22 typedef struct vysledek
24 double result;
25 int error;
26 } Tvysledek;
28 /**
29 * provede operaci scitani a vysledek vrati ve strukture Tvysledek.
30 * @param a prvni scitanec.
31 * @param b druhy scitanec.
32 * @return Vrací strukturu obsahujici soucet a+b.
34 Tvysledek scitani(double a, double b){
35 Tvysledek result={
36 .error=0;
37 .result=a+b;
39 return result;
42 /**
43 * provede operaci odcitani a vysledek vrati ve strukture Tvysledek.
44 * @param a mensenec.
45 * @param b mensitel.
46 * @return Vrací strukturu obsahujici podil a-b.
48 Tvysledek odcitani(double a, double b) {
49 Tvysledek result={
50 .error=0;
51 .result=a-b;
53 return result;
56 /**
57 * provede operaci nasobeni a vysledek vrati ve strukture Tvysledek.
58 * @param a prvni cinitel.
59 * @param b druhy cinitel.
60 * @return Vrací strukturu obsahujici soucin a*b.
62 Tvysledek nasobeni(double a, double b) {
63 Tvysledek result={
64 .error=0;
65 .result=a*b;
67 return result;
70 /**
71 * provede operaci deleni a vysledek vrati ve strukture Tvysledek.
72 * @param a delenec.
73 * @param b delitel.
74 * @return Vrací strukturu obsahujici podil a/b.
76 Tvysledek deleni(double a, double b) {
77 Tvysledek result={
78 .error=0;
79 .result=a/b;
81 return result;
84 /**
85 * provede operaci scitani a vysledek vrati ve strukture Tvysledek.
86 * pokud vysledek neni zobrazitelny v ciselnem rozsahu double je vysledna hodnota .error nastavena na 1.
87 * pokud exponent neni prirozene cislo je vysledna hodnota .error nastavena na 1.
88 * @param a zaklad mocniny.
89 * @param exponent exponent umocneni.
90 * @return Vrací strukturu obsahujici hodnotu a^exponent a pripadnou indikaci chyby.
92 Tvysledek umocneni(double a, double exponent) {
93 Tvysledek result={
94 .error=0;
95 .result=0;
97 if ((exponent%1)!=0 || exponent<0 || exponent>DBL_MAX_EXP){
98 result.error=1;
99 return result;}
100 result.result=pow(a,exponent);
102 return result;
106 * vypocita faktorial a vysledek vrati ve strukture Tvysledek.
107 * pokud vysledek neni zobrazitelny v ciselnem rozsahu double je vysledna hodnota .error nastavena na 1.
108 * pokud zaklad faktorialu neni prirozene cislo je vysledna hodnota .error nastavena na 1.
109 * @param a zaklad faktorialu.
110 * @return Vrací strukturu obsahujici hodnotu a! a pripadnou indikaci chyby.
112 Tvysledek faktorial(double a){
113 Tvysledek result={
114 .error=0;
115 .result=1;
117 if ((a%1)!=0 || a<0 || a>MAX_FACTBASE){
118 result.error=1;
119 return result;}
120 while (a>1) do {
121 result.result=result.result*a;
122 a--;
124 return result;
128 * vypocita prirozeny logaritmus a vysledek vrati ve strukture Tvysledek.
129 * pokud je numerus logaritmu zaporny je vysledna hodnota .error nastavena na 1.
130 * @param a numerus logaritmu.
131 * @return Vrací strukturu obsahujici hodnotu ln(a) a pripadnou indikaci chyby.
133 Tvysledek logaritmus(double a) {
134 Tvysledek result={
135 .error=0;
136 .result=0;
138 if (a<0){
139 result.error=1;
140 return result;
142 result.result=log(a);
143 return result;
145 /*** konec souboru knihovna.c ***/