www.mikrocontroller.net

Forum: PC-Programmierung Woher kommt das Vorzeichen?


Autor: Roland K. (roland788)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe hier diesen Quelltext:

int main()
{
  printf("Geben Sie als Radius 0 ein, um das Programm zu beenden.\n\n");

  const double PI = 3.14159;  /* Kreiskonstante pi */
  double r = 1.0;             /* Radius der Kugel */
  double A = 0.0;             /* Oberflaeche der Kugel */
  double V = 0.0;

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

  if(r==0){ break;}
  /* Berechnungen durchfuehren */
  A = 4.0 * PI * r * r;
  V = (4.0/3.0) * PI * r * r * r;
  /* Ausgabe des Ergebnisses */
  printf("Radius: %.2lf\n", r);
  printf("Oberflaeche: %.2lf\n", A);
  printf("Volumen: %.2lf\n ",V);
  }
}

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.
Geben Sie als Radius 0 ein, um das Programm zu beenden.

Kugelradius: 2
Radius: 2.00
Oberfläche: 50.27 
Volumen: 33.51
 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

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist das letzte Leerzeichen aus dieser Anweisung:

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

Autor: Roland K. (roland788)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ups, hab immer nur beim Kugelradius gesucht. Danke!

Gruß, Roland

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.