Konstrukcja wartosci bezwględnej ABS!!!

0

Mam problem otóż proszę kogoś o sprawdzenie czy dobrze zapisałem formułę ABS

:

{
double x,y,z;
cout<<"Podaj liczbe X : \n";
cin>>x;
cout<<"Podaj liczbe Z :\n";
cin>>z;
if (abs(z)>abs(x)&&x>1||x<-1)

			y=1/x*(sqrt((z*z)-(x*x)));
			
		else if (abs(x)>abs(z)&&z>1||z<-1)
	
			y=1/z*(sqrt((x*x)-(z*z)));
		else	
		
			y=1/55*(x*z);
			
	cout<<" Wartosc wyrazenia wynosi : "<<y<<endl;

Chodzi mi o te 2 ify if ,,, else if
czy dobrze jest zapisana wartosc bezwzgleda ma to wygladac tak

if ( |z| >|x| i x jest rozne od 0 )

else if ( |x|>|z| i z jest rozne od 0 )

PROSZE O POMOC!!!!

0

Równy ==
Różny !=

0

double x,y,z;
cout<<"Podaj liczbe X : \n";
cin>>x;
cout<<"Podaj liczbe Z :\n";
cin>>z;
if (abs(z)>abs(x)&&x!=0)

			y=1/x*(sqrt((z*z)-(x*x)));
			
		else if (abs(x)>abs(z)&&z!=0)
	
			y=1/z*(sqrt((x*x)-(z*z)));
		else	
		
			y=1/55*(x*z);
			
	cout<<" Wartosc wyrazenia wynosi : "<<y<<endl;

a teraz wszystko jest dobrze?/ czy cos jeszcze zle

0

Zacznijmy od tego, że pseudokod jest niepoprawny ;p

if ( |z| >|x| i x jest rozne od 0 )

else if ( |x|>|z| i z jest rozne od 0 )

po zamykającym nawiasie pierwszego if'a nawet w pseudokodzie warto napisać coś w rodzaju instrukcja_dla_true; a tu od razu else, na co kompilator by nie był zadowolony.

Pomijając. Zastanów się, czy "na oko" wyrażenia są równoważne:

if ( |z| > |x| i x jest rozne od 0 ) <-założenie
if (abs(z)>abs(x) && x!=0) <-twój kod

Oraz

if ( |x| > |z| i z jest rozne od 0 )
if ( abs(x) > abs(z) && z!=0)

Wygląda na to, że wiesz jak działa abs(liczba), więc na kartce sobie policz i sprawdź poprawność jeśli np. nie wierzysz oczom. Użyj jakiś małych liczb, najlepiej różne kombinacje: obie równe, pierwsza większa & druga mniejsza, i na odwrót.

0

Widze właśnie ze coś zły wynik wychodzi ale nie wiem gdzie tkwi błąd....
Moim zdaniem teraz jest wszystko O.K
Hm...
Powino być dobrze nawet bez instruckji warunkowej.

Jestem teeraz juz bez pojęcia...

0

Jak wezme x=2 z=1 to wyhdzi ten sam wynik gdy wezme x=1 z=2
hmmmmm.?????
please tell me why

0

Bo te równania wychodzą tak samo. Dlaczego ? Bo zamieniłeś miejscami x z z w nich i jak zamienisz wartości x z z to jak ma ci nie wyjść to samo :

 

if (abs(z)>abs(x)&&x!=0)
           y=1/1*(sqrt((2*2)-(1*1)));
else if (abs(x)>abs(z)&&z!=0)
           y=1/1*(sqrt((2*2)-(1*1)));
0
zidu89 napisał(a):

Bo te równania wychodzą tak samo. Dlaczego ? Bo zamieniłeś miejscami x z z w nich i jak zamienisz wartości x z z to jak ma ci nie wyjść to samo :

 

if (abs(z)>abs(x)&&x!=0)
           y=1/1*(sqrt((2*2)-(1*1)));
else if (abs(x)>abs(z)&&z!=0)
           y=1/1*(sqrt((2*2)-(1*1)));

Ale ja jestem głupi.... omg
dzieki za pomoc!

1 użytkowników online, w tym zalogowanych: 0, gości: 1