Avatar billede Slettet bruger
31. januar 2006 - 13:02 Der er 8 kommentarer og
1 løsning

If sætning som driller

Hej,

jeg har en if sætning som ser således ud:

if ((x!=0) && (y!=0) && (z!=0))

men den går ikke da x og y er af typen int mens z er af typen float. Hvordan kan jeg få if sætningen til at virke som ovenstående lettest muligt?!
Avatar billede soreno Praktikant
31. januar 2006 - 13:14 #1
z<0 && z>0
er ækvivalent med
z!=0

Men er du sikker på det er det du vil ?
Det er ikke særlig præcist at teste en eksakt værdi når vi snakker floats.
Der kunne være tilfælde hvor z=0.000000000001 - hvad skal der ske i det tilfælde ?

En bedre måde kunne være at definere et buffer interval. f.eks. 0.1 på hver side af 0.

z>0+buffer && z<0-buffer
Avatar billede arne_v Ekspert
31. januar 2006 - 13:14 #2
koden er legal men foelgende virker nok bedre:

if ((x!=0) && (y!=0) && (fabs(z)<0.0000001))
Avatar billede arne_v Ekspert
31. januar 2006 - 13:15 #3
soeren>

jeg formoder at han skal dividere
Avatar billede Slettet bruger
31. januar 2006 - 13:17 #4
jeg skal bare sikre mig at z er forskellig fra "0"...

der skal ikke divideres, det værste der kan ske med z er at der lægges et tal til eller trækkes et tal fra.... :o)
Avatar billede Slettet bruger
01. februar 2006 - 18:37 #5
Du kunne jo (Jeg er nooben over alle noober til C++) inden den if-sætning (Nej, jeg maner det --- jeg er VIRKELIG noob) lave float-versioner af x og y... Korrekt? Og jeg mener det, er det korrekt? Jeg er ikke sikker :S
Avatar billede Slettet bruger
01. februar 2006 - 18:40 #6
- Hvis det er korrekt, og du ikke har noget imod en ekstra linie eller to, kunne du jo sige:

float fltx = x;
float flty = y;
if ((fltx != 0) && (flty != 0) && (z != 0))
{
    // YAKETI-YAKETI-YAK!!!
}

- Eller...?
Avatar billede arne_v Ekspert
02. februar 2006 - 03:19 #7
proev lige fabs loesningen
Avatar billede Slettet bruger
10. februar 2006 - 08:37 #8
Soreno gider du lave en besvarelse, så vi kan lukke. Det var dit svar jeg brugte.
Avatar billede soreno Praktikant
10. februar 2006 - 09:19 #9
Ok.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester