Forum: PC-Programmierung Woher kommt das Vorzeichen?


von Roland K. (roland788)


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

von yalu (Gast)


Lesenswert?

Das ist das letzte Leerzeichen aus dieser Anweisung:

  printf("Volumen: %.2lf\n ",V);
                          ^

von Roland K. (roland788)


Lesenswert?

Ups, hab immer nur beim Kugelradius gesucht. Danke!

Gruß, Roland

von Sven P. (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.