Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Bußgeldrechner (https://www.delphipraxis.net/125229-bussgeldrechner.html)

rhesusaffe89 2. Dez 2008 22:33


Bußgeldrechner
 
Hallo.
Bin ein ziemlicher Delphi Neuling. Bis auf die Schulischen Übungen habe ich nicht viel Erfahrung im Programmieren. Nur jetzt in der Uni.
Eine Aufgabe ist jetzt das Erstellen eine Bußgeldrechners.
Dabei sind die zulässige Höchstgeschwindigkeit, die gefahrene Geschwindigkeit einzugeben. Weiterhin ist einzugeben, ob es in einer Ortschaft war oder nicht (habe ich durch eine Radiogroup versucht zu realisieren)
Auszugeben sind das Bußgeld, evtl. Punkte und Fahrverbot.
Zunächst habe ich versucht durch eine if-then anweisung den bußgeldrechner zu programmieren. das heißt, wenn ein auto zwischen 50 und 60 fährt, dann gibt es 15 euro bußgeld usw.
das programm läuft allerdings nicht mal, irgendein gleitkommawertfehler soll vorliegen. Hab da natürlich nicht so den plan davon.
Hier mal der Quelltext. Sieht noch ziemlich spärlich aus, wie gesagt bin Neuling.

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
  var zulgesch, gefgesch, bußgeld, inort, punkte, fahrverbot : real;

begin
case radiogroup1.itemindex of
    0 : inort := 'ja';
    1 : inort := 'nein';
    end;
begin
    zulgesch:= StrToFloat(Edit1.Text);
    gefgesch:= StrToFloat(Edit2.Text);
    bußgeld:= StrToFloat(Edit3.Text);
    if (gefgesch >= 50) and (gefgesch <=60) then
    bußgeld:= 15;
    if (gefgesch >= 60) and (gefgesch <=65) then
    bußgeld:= 25;
    end;

end;

end.
Vielleicht habt ihr Tips, Tricks oder schonmal sowas programmiert?
Mfg rhesusaffe

[edit=Matze][delphi]-Tags gesetzt. MfG, Matze[/edit]

Michael Habbe 2. Dez 2008 22:41

Re: Bußgeldrechner
 
Zitat:

Zitat von rhesusaffe89
das programm läuft allerdings nicht mal, irgendein gleitkommawertfehler soll vorliegen.

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  zulgesch, gefgesch, bußgeld: Double;
  inort: String;
  punkte, fahrverbot: Integer;
begin
  case radiogroup1.itemindex of
    0 : inort := 'ja';
    1 : inort := 'nein';
  end;
  zulgesch:= StrToFloat(Edit1.Text);
  gefgesch:= StrToFloat(Edit2.Text);
  bußgeld:= StrToFloat(Edit3.Text);
  if (gefgesch >= 50) and (gefgesch <=60) then
    bußgeld:= 15;
  if (gefgesch >= 60) and (gefgesch <=65) then
    bußgeld:= 25;
  end;
end;
end.

Hi und willkommen.
Verwende doch das nächste Mal die "Delphi"-Tags im Editor.

Hab Deine Prozedur mal überarbeitet.
Du hattest inort als Real deklariert, hast dann aber versucht eine Zeichenkette zuzuweisen.
Desweiteren nicht real sondern als Dezimaldatentyp Double verwenden.

Gruß
Michael

rhesusaffe89 2. Dez 2008 22:47

Re: Bußgeldrechner
 
ok danke schon mal soweit. stimmt, das inort hätte ich als string deklarieren sollen, hatte ich auch erst. hab mir aber gedacht, das programm läuft trotzdem nicht, also liegt der fehler wohl nicht daran.
naja gut, werde mich dann nochmal dran setzen und schauen wie weit ich komme!
mfg rhesusaffe

PS: nächstes mal nehme ich die tag-funktion im editor :)

rhesusaffe89 3. Dez 2008 09:26

Re: Bußgeldrechner
 
Hmm naja so richtig weiter bin ich nicht gekommen. Hat einer vielleicht "die" zündende Idee, das Programm zu laufen zu bekommen?
Mfg rhesusaffe

Sherlock 3. Dez 2008 09:35

Re: Bußgeldrechner
 
Was genau läuft denn nicht?

Sherlock

Frankfurtoder 3. Dez 2008 09:42

Re: Bußgeldrechner
 
Mir erscheint das mit der Geschwindigkeit zwischen 50 und 60 nicht logisch. Wahrscheinlich meinst du, dass 50 das Limit ist und man bei bis zu 10km/h schneller 15 Euro zahlen muss. Im prinzip ist das doch recht einfach. Du hast immerin alle 3 Angaben:
- Zulässige Höchstgeschwindigkeit
- gefahrene Geschwindigkeit
- Innerorts, Außerorts

Die Differenz zwischen zulässige Höchstgeschwindigkeit und gefahrener ist dann die Übertretung. Nun musst du nur noch schauen ob es Innerorts oder Außerorts und jenachdem einfach einen Wert ausgeben (die Strafe).

leddl 3. Dez 2008 09:46

Re: Bußgeldrechner
 
Zitat:

Zitat von rhesusaffe89
Hmm naja so richtig weiter bin ich nicht gekommen. Hat einer vielleicht "die" zündende Idee, das Programm zu laufen zu bekommen?

Ein ganz heißer Tipp wäre eventuell, das Ergebnis auch auszugeben, statt es vorher einzulesen :stupid:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  zulgesch, gefgesch, bußgeld: Double;
  inort: String;
  punkte, fahrverbot: Integer;
begin
  case radiogroup1.itemindex of
    0 : inort := 'ja';
    1 : inort := 'nein';
  end;
  zulgesch:= StrToFloat(Edit1.Text);
  gefgesch:= StrToFloat(Edit2.Text);
  //bußgeld:= StrToFloat(Edit3.Text); <-- Hier liest du ein, was der User gerne für ein Bußgeld hätte ;)
  if (gefgesch >= 50) and (gefgesch <=60) then
    bußgeld:= 15;
  if (gefgesch >= 60) and (gefgesch <=65) then
    bußgeld:= 25;
  end;

  Edit3.Text := FloatToStr(bußgeld); //<-- Besser wäre es, das Ergebnis am Ende der Methode auszugeben ;)
end;
end.
Im Übrigen bin ich mir nicht wirklich sicher, was Delphi zu dem 'ß' sagt. AFAIK sollte man darauf (und auch auf Umlaute) bei der Programmierung verzichten ;)

Achso, und warum ein String für 'inort'? :gruebel: Ein Boolean wäre da doch IMHO deutlich sinnvoller:
Delphi-Quellcode:
inort : Boolean;
//...
inort := (RadioGroup1.ItemIndex = 1);
Und noch ein Edit: Der Hinweis von Frankfurtoder ist sowieso sehr sinnvoll. Warum denn so komplizierte If-Konstrukte, wenn es doch im Endeffekt immer nur um die Geschwindigkeitsübertretung geht?
Das ließe sich doch mit einem Case mit Bereichsüberprüfung deutlich übersichtlicher gestalten. Voraussetzung wäre allerdings, dass du die Geschwindkigeiten als Integer definierst. Ich sehe aber im Moment sowieso keinen Sinn darin, dafür einen Double zu benutzen...
Delphi-Quellcode:
Case gefgesch-zulgesch of
  0..10: bußgeld := 15;
  11..15: bußgeld := 25;
  else bußgeld := 42;
end;
Btw stimmen die Bußgelder doch sowieso nicht... Deinem Code nach muss ich 15€ Strafe zahlen, wenn ich mit 50 durch die Stadt fahre? :gruebel:

rhesusaffe89 3. Dez 2008 19:14

Re: Bußgeldrechner
 
ui ui ui
danke erstmal der antworten!
naja wenn da einiges ziemlich unlogisch erscheint, wie gesagt ich hatte bis jetzt mit delphi nicht viel am hut!
mich verwirrt das hier auch alles n bisschen!
naja nicht so meine sprache, die programmiersprache :\

rhesusaffe89 3. Dez 2008 21:39

Re: Bußgeldrechner
 
Kann mir denn wenigstens einer nen Struktogramm zu meiner Aufgabe schreiben? Daraus könnte ich dann ja ein Programm schreiben.
Wie gesagt, habe mein Programm soweit geschrieben, aber seh da wohl die logischen Zusammenhänge nicht so richtig.
Ich brauch hilfe :(

Mfg Rhesusaffe

ryLIX 3. Dez 2008 22:01

Re: Bußgeldrechner
 
Versuch doch die Basics zu verstehen die hier angesprochen wurden.

Variablen und Konstanten
Verzweigungen

Les dir das mal in Ruhe durch und versuch das umzusetzen was hier vorgeschlagen wurde.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:29 Uhr.
Seite 1 von 2  1 2      

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