Anfaenger

Antworten
Nachricht
Autor
logo
Beiträge: 20
Registriert: 06. Mär 2003 23:42

Anfaenger

#1 Beitrag von logo » 10. Dez 2003 14:30

Hallo,

ich moechte erreichen, dass bei einer Divisionabfrage entweder die Ausgabe kommt Resultat gleich 0, wenn der Zaehler gleich 0 ist oder falsche Eingabe wenn der Nenner gleich 0 ist.
Doch bei dem Programm bekomme ich eine nichtnachvollziehbare Ausgabe:

#include<stdio.h>
#include<stdlib.h>

int main()
{
float x,y,z;

printf("2 Floatzahlen eingeben:
");
scanf("%g %g", &x, &y);

if(x>y)
z=x/y;
else if(x==0. || y==0.)
{
if(!x)
{
z=0;
}
else
{
printf("Nulldivision nicht moeglich!
");
exit(10);
}
}
else
z=y/x;

printf("Resultat: %g
", z);
exit(0);
}

bis bald
Andreas

Tom

Re: Anfaenger

#2 Beitrag von Tom » 10. Dez 2003 19:02

Mal auf die Schnelle... probiers mal hiermit

#include<stdio.h>
#include<stdlib.h>

int main()
{
float x,y,z;


printf("2 Floatzahlen eingeben: ");
scanf("%g %g", &x, &y);

if((x>y) && (y!=0.))
z=x/y;
else if(x==0. || y==0.)
{
if((!x)&&(y!=0.))
{
z=0;
}
else
{
printf("Nulldivision nicht moeglich! ");
exit(10);
}
}
else
z=y/x;

printf("Resultat: %g ", z);
exit(0);
}


Aber der Vergleich von Fliesskommazahlen auf die Art "x == 0." hinkt etwas. Besser, wenn du überprüfst, ob die absolute Differenz zwischen x,y und 0.0 kleiner als ein maschinenabhängiger Wert ist.

Antworten