Delphi Rechnung mit Pi, Resulat unbrauchbar

computerfreaky

Lt. Commander
Registriert
Juni 2008
Beiträge
1.589
Hallo
Also hab erst angefangen zu programmieren;)
Also ich soll ein Programm schreiben, dass den Umfang eines Kreises rechnet, jedoch gibt mir dies ein ungebrauchliches Resultat.
Code:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;
VAR DURCHMESSER, UMFANG:REAL;
begin
  write('Gebt den Durchmesser an:');
  readln(DURCHMESSER);
UMFANG:=DURCHMESSER*PI;
  write('Der Umfang ist:',UMFANG);
  readln;  { TODO -oUser -cConsole Main : placez le code ici }
end.
So, jetzt hat mir jmd den Rat gegeben, direkt nach begin das hier zu schreiben writeln(PI:0:3); //um den Stellenwert zu reduzieren
Jedoch ändert nichts am Resultat, sondern schreibt nur halt den Wert von PI auf, und (PI:0:3); //ohne writeln funzt nicht

Kann mir da jmd helfen bitte?
THX
 

Anhänge

  • Aufzeichnen.JPG
    Aufzeichnen.JPG
    23,7 KB · Aufrufe: 258
  • Aufzeichnen2.JPG
    Aufzeichnen2.JPG
    23,2 KB · Aufrufe: 187
Zuletzt bearbeitet:
Die Ergebnisse sind richtig, du solltest dir vielleicht angucken, wie man Zahlen unter Delphi formatiert, speziell wie man die Ausgabe im üblichen Dezimalformat erzwingt.
 
Da war mal wieder einer schneller :-D
Das Resultat ist korrekt. Das E0000x steht für 10^x. Das bedeutet beim ersten Bild, dass dein Wert 6.28..*10^0 = 6.28...
Wie mein Vorredner bereits gesagt hat, muss nur die Ausgabe anders formatiert werden.
greetz
 
Du musst vor der Ausgabe das Ergebnis formatieren.
Ein Formatieren vor der Berechnung macht nur das ergebnis ungenau.
Du schreibst nicht mit welchen Version du Programmierst aber bei D6 sieht die Fumktion so aus:

Format('%8.2f', [123.456])

Wobei 8.2 für 8 Stellen vor und 2 nach dem komma steht.
In die eckigen Klammern müsste die Variable Umfang rein.
 
THX für eure Antworten, also mein Lehrer sagte, man müsste halt dies schreiben writeln(PI:0:3); um einen Stellenwert zu geben, was ja aber gar nichts bringt, denke ich werde das noch sehen in der Schule^^
@C_H4: Willkommen @ FB:)
Also ich verwende Delphi 6 Personal von der Schule
Also hab mal probiert wie Mika911 vorgschlagen hat, jdeoch bringt das auch nichts, bzw bekomme ich wieder das selbe Resultat wie im Post#1 :(
Code:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;
VAR DURCHMESSER, UMFANG:REAL;
begin
Format('%4.2f', [UMFANG]);
  write('Gebt den Durchmesser an:');
  readln(DURCHMESSER);
UMFANG:=DURCHMESSER*PI;
  write('Der Umfang ist:',UMFANG);
  readln;  { TODO -oUser -cConsole Main : placez le code ici }
end.
Kann mir da jmd helfen bitte, ist halt mein erstes Jahr programmieren^^
 
Zuletzt bearbeitet:
Ja, weil du wieder am Anfang formatierst. :D
Der Formatbefehl muss vor die Ausgabe und nach der Berechnung stehen
also in deinem Fall zwischen

UMFANG:=DURCHMESSER*PI;
und
write('Der Umfang ist:',UMFANG);

Der Formatbefehl stutzt nur vorhandene Eintragungen und legt keine allgemeine Gültigkeit für die Variable fest.
Du hast jetzt die leere Variable Umfang auf die Stellen beschnitten (was ja sinnlos ist) und danach die
lange "hässliche" Berechnung von dir in die Variable geschrieben.
 
Zuletzt bearbeitet:
So ich habs jetzt mal so gemacht wie du gesagt hast, aber das bringt noch immer nichts
Code:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;
VAR RADIUS, UMFANG:REAL;
begin
  write('Gib den Radius an:');
  readln(RADIUS);
  UMFANG:=2*Radius*PI;
  Format('%4.4f', [UMFANG]);
  write('Der Umfang ist:',UMFANG);
  readln;
  { TODO -oUser -cConsole Main : placez le code ici }
end.
 
Versuch mal
Code:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;
VAR RADIUS, UMFANG:REAL;
begin
  write('Gib den Radius an:');
  readln(RADIUS);
  UMFANG:=2*Radius*PI;
  write('Der Umfang ist:',  Format('%4.4f', [UMFANG]));
  readln;
  { TODO -oUser -cConsole Main : placez le code ici }
end.
 
Ja, das was Revontulet schreibt könnte so klappen.
Ich hab länger nicht mehr Delphi programmiert, es kann auch sein das du das zuweisen musst.
Wäre dann:

UMFANG := Format('%4.4f', [UMFANG]);

Um die selbst die Möglichkeit zu geben und zu forschen,
ich hab in delphi einfach format eingegeben, den Cursor drauf gesetzt und F1 gedrückt.
Dann nur noch den letzten Punkt anwählen "Sting formatierungen" oder so ähnlich.

edit: Ok, dann hat es ja funktioniert.
Ich bin mir aber sicher das meine jetztige Variante auch funktioniert hätte ;)
 
Zurück
Oben