Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <math.h> // sqrt
- // vytvoreni struktur pro vypocet kvadraticke rovnice
- typedef struct {
- float a;
- float b;
- float c;
- } koefKvadRovnice;
- typedef struct{
- float realnaSlozka;
- float imaginarniSlozka;
- } komplexniCislo;
- typedef struct{
- komplexniCislo koren1;
- komplexniCislo koren2;
- } korenyKvadRovnice;
- // deklarace a definice funkce
- void vypisKvadRovnice(koefKvadRovnice rovnice)
- {
- printf("%fx^2 + (%fx) + (%f) = 0\n", rovnice.a, rovnice.b, rovnice.c);
- }
- korenyKvadRovnice vypocetKvadRovnice(koefKvadRovnice rovnice)
- {
- // b^2 - 4 * a * c
- float D = rovnice.b * rovnice.b - (4 * rovnice.a * rovnice.c);
- // 2 * a
- float doubleA = 2 * rovnice.a;
- korenyKvadRovnice vysledek;
- // vypocet korenu kvadraticke rovnice
- if(D > 0){
- vysledek.koren1.imaginarniSlozka = 0;
- vysledek.koren2.imaginarniSlozka = 0;
- vysledek.koren1.realnaSlozka = (-rovnice.b + sqrt(D))/doubleA;
- vysledek.koren2.realnaSlozka = (-rovnice.b - sqrt(D))/doubleA;
- }else if(D < 0){
- // dodelat
- }else
- {
- // D == 0
- // dodelat
- }
- // navrat vysledku z funkce
- return vysledek;
- }
- void vypisKorenu(korenyKvadRovnice koreny)
- {
- if(fabs(koreny.koren1.imaginarniSlozka) > 0)
- {
- printf("r1 = %f + %fi\n"
- "r2 = %f - %fi\n\n",
- koreny.koren1.realnaSlozka,
- fabs(koreny.koren1.imaginarniSlozka),
- koreny.koren2.realnaSlozka,
- fabs(koreny.koren2.imaginarniSlozka));
- }else{
- printf("r1 = %f\n"
- "r2 = %f\n\n", koreny.koren1.realnaSlozka,
- koreny.koren2.realnaSlozka);
- }
- }
- int main()
- {
- koefKvadRovnice rovnice[3] = {{1, 7, 12}, {1, -10, 25}, {1, 1, 1}};
- // naplneni pres jednotlive prvky struktury
- rovnice[0].a = 1;
- rovnice[0].b = 7;
- rovnice[0].c = 12;
- // sizeof(rovnice)/sizeof(rovnice[0])
- // size of vraci velikost operandu v bytech, vyraz v podmince cyklu provede
- // 36 / 12 = 3
- // koefKvadRovnice se sklada 3x float = 3*4 = 12
- // pole rovnice je 3*12 = 36
- for(int i = 0; i < sizeof(rovnice)/sizeof(koefKvadRovnice); i++)
- {
- // vypis rovnice do konzole
- vypisKvadRovnice(rovnice[i]);
- // vypocitani kvad rovnice
- korenyKvadRovnice vysledek = vypocetKvadRovnice(rovnice[i]);
- // vypsani korenu do konzole
- vypisKorenu(vysledek);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement