Woher kommt das Vorzeichen?

#1557330
Lesenswert?

Hallo,

ich habe hier diesen Quelltext:
1
int main()
2
{
3
  printf("Geben Sie als Radius 0 ein, um das Programm zu beenden.\n\n");
4

5
  const double PI = 3.14159;  /* Kreiskonstante pi */
6
  double r = 1.0;             /* Radius der Kugel */
7
  double A = 0.0;             /* Oberflaeche der Kugel */
8
  double V = 0.0;
9

10
  while(r!=0){
11
  /* Radius vom Benutzer einlesen */
12
  printf("Kugelradius: ");
13
  scanf("%lf", &r);
14

15
  if(r==0){ break;}
16
  /* Berechnungen durchfuehren */
17
  A = 4.0 * PI * r * r;
18
  V = (4.0/3.0) * PI * r * r * r;
19
  /* Ausgabe des Ergebnisses */
20
  printf("Radius: %.2lf\n", r);
21
  printf("Oberflaeche: %.2lf\n", A);
22
  printf("Volumen: %.2lf\n ",V);
23
  }
24
}

Der soll Kugeloberfläche und Volumen berechnen und zwar solange, bis der 
Benutzer eine 0 eingibt.

Jetzt gibt es ein Problem mit der Ausgabe:
Beispiel:

Ich gebe eine '2' ein.
1
Geben Sie als Radius 0 ein, um das Programm zu beenden.
2

3
Kugelradius: 2
4
Radius: 2.00
5
Oberfläche: 50.27 
6
Volumen: 33.51
7
 Kugelradius:

und er wartet auf eine weitere Eingabe.
Und jetzt sind 1 oder 2 (glaube 1) Leerzeichen vor "Kugelradius: ".

Weiß jemand, woher die kommen könnten?

MfG
Roland
Gast #1557764
Lesenswert?

Ne Bemerkung am Rande:

Eine Fließkommazahl direkt, also mit '==', zu vergleichen, ist meistens 
immer eine ungute Idee. Fließkommazahlen sind ungenau (ok, '0' lässt 
sich natürlich exkat darstellen, keine Frage), aber auch bei '0' gibt es 
z.B. '+0' und '-0'...

Die Bedingung in 'while()' ist auch überflüssig.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren