AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit Rechenprogramm

Ein Thema von Davidlocke13 · begonnen am 22. Okt 2012 · letzter Beitrag vom 22. Okt 2012
Antwort Antwort
Benutzerbild von Davidlocke13
Davidlocke13

Registriert seit: 19. Sep 2012
Ort: MD (Sachsen-Anhalt)
166 Beiträge
 
Delphi 2010 Enterprise
 
#1

Problem mit Rechenprogramm

  Alt 22. Okt 2012, 11:21
Morgen habe ein Problem mit folgendem Programm
Code:
program Ohmschenwiderstand;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  Spannung,Widerstand: real;

begin
  try
    { TODO -oEntwickler -cKonsole Main : Hier Code einfügen }
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;

  begin
      writeln ('Ohmschenwiderstand berechnen');
      writeln ('Geben Sie den Wert fuer die Spannung U ein');
      readln (Spannung);
      writeln ('Geben Sie den Wert fuer den Widerstand R ein');
      readln (Widerstand);
      writeln ('Die Stromstaerke I betraegt');
      writeln (Spannung/Widerstand);
      writeln('OHM');
      readln;
  end;
end.
Ich bekomme immer nur ein Ergebnis was so aussieht: 1.00000000000E+0000

Wo ist mein Fehler ?

LG David
David
ApfelsineMandarineAllesGleich
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.168 Beiträge
 
Delphi 12 Athens
 
#2

AW: Problem mit Rechenprogramm

  Alt 22. Okt 2012, 11:29
Dein Fehler ist, daß du Delphi die Formatierung deiner Zahl überlassen hast und das hat sich halt für die Darstellung als Exponentialzahl entschieden. (also zeige soviel wie möglich)

Ich glaub in der OH sollte drinsteht, wie man beim Delphi-Referenz durchsuchenWrite/Delphi-Referenz durchsuchenWriteLn die Zahlen formatiert und ansonsten gibt es noch Delphi-Referenz durchsuchenFloatToStr, Delphi-Referenz durchsuchenFormatFloat, Delphi-Referenz durchsuchenFormat, uvm.



PS: Was ist an "Hier Code einfügen" so schwer zu verstehen? Oder anders gesagt, warum ist dein Code hinter dem Schutzblock und nicht darin?

Ich würde dir aber noch eine kleine Erweiterung empfehlen.
Delphi-Quellcode:
  try
    // Hier deinen Code einfügen
  except
    on E: Exception do
    begin
      WriteLn(E.ClassName, ': ', E.Message);
      WriteLn('Weiter mit [Enter] ...');
      ReadLn;
    end;
  end;
Denn ohne Debugger oder wenn man das Program nicht direkt von einer Konsole (CMD) aufruft, sieht man die Fehlermeldung nicht (so schnell kann keiner Gucken, wie das Fenster wieder weg ist)
In einem VCL-Programm, z.B. in einer Button-Klick-Methode, hat Delphi auch soeinen Code automatisch drumrumgemacht und zeigt die Meldung dann als MessageBox an.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (22. Okt 2012 um 11:35 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Davidlocke13
Davidlocke13

Registriert seit: 19. Sep 2012
Ort: MD (Sachsen-Anhalt)
166 Beiträge
 
Delphi 2010 Enterprise
 
#3

AW: Problem mit Rechenprogramm

  Alt 22. Okt 2012, 11:33
So berichtigt steht schon drin ist mir gerade auch aufgefallen
David
ApfelsineMandarineAllesGleich
  Mit Zitat antworten Zitat
Benutzerbild von Davidlocke13
Davidlocke13

Registriert seit: 19. Sep 2012
Ort: MD (Sachsen-Anhalt)
166 Beiträge
 
Delphi 2010 Enterprise
 
#4

AW: Problem mit Rechenprogramm

  Alt 22. Okt 2012, 11:35
Allerdings habe ich ihm doch gesagt das es real sein soll !
David
ApfelsineMandarineAllesGleich

Geändert von Davidlocke13 (22. Okt 2012 um 11:38 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.168 Beiträge
 
Delphi 12 Athens
 
#5

AW: Problem mit Rechenprogramm

  Alt 22. Okt 2012, 11:42
Allerdings habe ich ihm doch gesagt das es real sein soll !
Jupp, du hast ein Real eine Fließkommazahl und was hat Delphi gemacht?
Es hat den Wert als Fließkommazahl dargestellt, nur eben mit einem Exponenten.
Woher sollte es auch wissen, daß du diese Darstellungsform nicht magst?

Wie gesagt, siehe die genannten Konvertierungsfunktionen und/oder mal die Beschreibung von Delphi-Referenz durchsuchenSystem.Write durchlesen. (Delphi-Referenz durchsuchenWriteLn und da zum Delphi-Referenz durchsuchenWrite durchklicken)


PS: 1.00000000000E+0000 = 1,00000000000 * 10^+0000 = 1 * 10^0 = 1 * 1 = 1

^ = hoch = Exponent von 10
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (22. Okt 2012 um 11:48 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Davidlocke13
Davidlocke13

Registriert seit: 19. Sep 2012
Ort: MD (Sachsen-Anhalt)
166 Beiträge
 
Delphi 2010 Enterprise
 
#6

AW: Problem mit Rechenprogramm

  Alt 22. Okt 2012, 11:57
Begreife ich nicht
David
ApfelsineMandarineAllesGleich
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#7

AW: Problem mit Rechenprogramm

  Alt 22. Okt 2012, 12:04
      writeln (Spannung/Widerstand :2 :10,' OHM');
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von Davidlocke13
Davidlocke13

Registriert seit: 19. Sep 2012
Ort: MD (Sachsen-Anhalt)
166 Beiträge
 
Delphi 2010 Enterprise
 
#8

AW: Problem mit Rechenprogramm

  Alt 22. Okt 2012, 12:08
Ok danke !
David
ApfelsineMandarineAllesGleich
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.168 Beiträge
 
Delphi 12 Athens
 
#9

AW: Problem mit Rechenprogramm

  Alt 22. Okt 2012, 12:11
Die Zahl, welche Delphi ausgibt, ist eine 1 (1,0 mal (10 hoch +0))

Die Zahl 123,45 wäre 1.2345e+2 und eine 0,00123 wäre 1.23e-3 .

http://docwiki.embarcadero.com/Libra...e/System.Write
Zitat:
...
Ein Schreibparameter kann auch die Angabe der Feldbreite und der Anzahl von Dezimalstellen enthalten.
...
Variable [: MinBreite [: DezStellen ] ]
...
[ ] = das da drin ist alternativ und kann weggelassen werden ... bzw. in deinem Fall mußt du es hinzufügen.

z.B. (Spannung/Widerstand):8:2 Oder eben du nutzt andere Funktionen (welche oben schon genannt wurden), um diese Fließkommazahl selbst in einen String umzuwandeln, so wie es dir gefällt, und gibst dann diesen String an das WriteLn weiter.

Delphi-Quellcode:
WriteLn(Format('%n', [Spannung/Widerstand]), ' OHM'); // ohne Stellenangabe
WriteLn(Format('%8.2n', [Spannung/Widerstand]), ' OHM'); // mit Stellenangabe, also den gleichen 8 und 2 aus dem oberen Beispiel

WriteLn(Format('%.2n', [Spannung/Widerstand]), ' OHM'); // oder einfach nur 2 Nachkommastellen
WriteLn(Format('%.2n OHM', [Spannung/Widerstand]));
Genauer Beschreibungen stehen ebenfalls in der OH (Links siehe ein paar Beiträge weiter oben) und vorallem was das N in %n bedeutet wird da erklärt. (Delphi-Referenz durchsuchenFormat)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (22. Okt 2012 um 12:18 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz