void oblicz_pierwiastki(struct rownanie * e) { if (e->wsp[0]!=0) { float d=oblicz_d(e); if (d>0) { e->x1r=-e->wsp[1]-sqroot(d)/(2*e->wsp[0]); e->x2r=-e->wsp[1]+sqroot(d)/(2*e->wsp[0]); printf("\n2 pierwiastki x1=%f, x2=%f", e->x1r, e->x2r); } else if (d==0) { e->x1r=-e->wsp[1]/(2*e->wsp[0]); printf("\n1 pierwiastek xo=%f",e->x1r); } else { e->x1r=(-e->wsp[1]/(float)(2*e->wsp[0])); e->x2r=e->x1r; float absd=d<0?-d:d; e->u.x1u=-sqroot(absd)/(2*e->wsp[0]); e->u.x2u=-e->u.x1u; printf("\nPierwiastki zespolone:\n"); formatuj_zesp(e->x1r, e->u.x1u); formatuj_zesp(e->x2r, e->u.x2u); } } else { if (e->wsp[1]!=0) { e->x1r=-e->wsp[2]/e->wsp[1]; printf("\nx1=%f",e->x1r); } else if(e->wsp[1]==0 && e->wsp[2]!=0) printf("\nr.sprzeczne"); else if (e->wsp[1]==0 && e->wsp[2]==0) printf("\nrnieoznaczone"); } }
int operacje_good::oblicz_pierwiastki() { if((tab[0]==0) && (tab[1]!=0)) { x1r=-(float)tab[2]/(float)tab[1]; return 1; } if((tab[0]==0) && (tab[1]==0) && (tab[2]!=0)) { return 2; } if((tab[0]==0) && (tab[1]==0) && (tab[2]==0)) { return 3; } if(tab[0]!=0) { oblicz_d(); if(d >0) { x1r=((-tab[1])-sqrt(d))/(2*(float)tab[0]); x2r=((-tab[1])+sqrt(d))/(2*(float)tab[0]); irr=(x1r/x2r); return 4; } if(d == 0) { x1r=(float)(-tab[1])/(float)(2*tab[0]); return 5; } if(d < 0) { x1r=(float)(-tab[1])/(2*tab[0]); x2r=(float)(-tab[1])/(2*tab[0]); x1u=-sqrt(abs((float)d))/(2*(float)tab[0]); x2u=sqrt(abs((float)d))/(2*(float)tab[0]); irr = (x1r * x2r + x1u * x2u)/((x2r * x2r) + (x2u * x2u)); iru = (x2r * x1u - x1r * x2u)/((x2r * x2r) + (x2u * x2u)); return 6; } } }
int _tmain(int argc, _TCHAR* argv[]) { //void test(int a, int b, int c, float x1rO, float x2rO, float x1uO, float x2uO) /* test(0, 0, 0, false2, false2, false2, false2); printf("\nprawda"); test(0, 0, 1, false2, false2, false2, false2); printf("\nfalsz"); test(0, 2, 3, -1.5000, false2, false2, false2); test(1, -2, 1, 1, false2, false2, false2); test(-1, 1, 2, -1, 2, false2, false2); test(1, 1, 1, -0.5, -0.5, -0.86603, 0.86603); */ //root = (struct node *) malloc(sizeof (struct node)); struct rownanie *R; R = (struct rownanie *) malloc(sizeof(struct rownanie)); struct urojona *u; u = (struct urojona *) malloc(sizeof(struct rownanie)); R->wsk = (int *) malloc(sizeof(int)* 3); R->u = u; printf("Struct Rownanie: Adres - %p", R); printf(", Rozmiar - %i\n", sizeof(*R)); printf("Struct Urojona: Adres - %p", u); printf(", Rozmiar - %i\n", sizeof(*u)); printf("int wsk size %i\n", sizeof(R->wsk)); printf("R->u Adr. %p\n", R->u); //od 6min //Zmienne globalne int a = 13, b = 8, c = -1; R->x1r = finit, R->u->x1u = finit, R->x2r = finit, R->u->x2u = finit, R->d = finit, R->sr = finit, R->u->su = finit, R->rr = finit, R->u->ru = finit, R->ilr = finit, R->u->ilu = finit, R->irr = finit, R->u->iru = finit; R->m1 = finit; R->m2 = finit; R->fi1 = finit; R->fi2 = finit; /*float x1r , x1u , x2r , x2u , d , sr, su , rr , ru, ilr , ilu , irr , iru ; */ podaj_a(R); podaj_b(R); podaj_c(R); formatuj_rownanie(R); //d=oblicz_d(a,b,c); oblicz_d(R); oblicz_pierwiastki(R); //if (a != 0 && b != 0 && c != 0) { if (R->x2r == false2 || R->u->x2u == false2) { //printf("no x2\n"); dodaj(R); odejmij(R); pomnoz(R); podziel(R); } else { dodaj(R); odejmij(R); pomnoz(R); podziel(R); } } postac_trygonometryczna(R); wyswietl_wynik(R); //oblicz_pierwiastki(a, b, c, &x1r, &x2r, &x1u, &x2u); //if else printf sqrt //axx + bx + c = 0 // 1xx>xx // + -> - // 0xx> // if 0p0p0 = 0>0 = 0 //printf("a=%d b=%d c=%d\n", a, b, c); //OBLICZENIA //printf("\n"); ////x2r = 3,2; //x2r = (float) 1 / 2; //x1r = (float)-b / (2 * a); /*float test = ((float)1 / 2); */ //printf("\n\n\n x1r %g\nx1u %g\nx2r %g\nx2u %g\nsr %g\nsu %g\nrr %g\nru %g\nilr %g\nilu %g\nirr %g\niru %g\nd %g\n", // x1r, x1u, x2r, x2u, sr, su, rr, ru, ilr, ilu, irr, iru, d); printf("\n"); system("pause"); return 0; }