Esempio n. 1
0
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;
			}
	}

}
Esempio n. 3
0
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;
}