![]() |
Delphi-Version: 5
Bruchrechenprogramm mit Selbsteingabe
Hallo,
ich habe mal wieder ein Problem. Ich möchte ein Bruchrechenprogramm mit Selbsteingabe schreiben. Habe schon die Randomize-Ausgabe von Brüchen. Nun möchte ich, das man die Lösung selbst eingeben kann und das Programm dann nur noch überprüft. Zerbreche mir seit Tagen den Kopf darüber, wie das gehen soll. Also wende ich mich an euch. Wie geht das? Gruß und im Hoffen auf eine Antwort timmy19 PS: Hier mal mein bisheriger Quelltext:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c,d,e,f, gggt : integer ; begin a:= IntEdit1.Value ; b:= IntEdit2.Value ; c:=IntEdit3.value ; d:= IntEdit4.Value ; e:= IntEdit5.Value ; f:= IntEdit6.Value ; randomize ; a:=random(10) ; IntEdit1.Value:= a ; randomize; b:= random(10) ; IntEdit2.Value:= b ; randomize; c:= random(6) ; IntEdit3.Value:= c ; randomize; d:= random(10) ; IntEdit4.Value:= d ; ggT(c,d, gggT) ; IntEdit6.Value:= gggt ; IntEdit5.Value := IntEdit1.Value + IntEdit2.Value; end; procedure TForm1.ggT(c,d:integer; var ggTeiler: integer) ; var merk :integer; begin repeat merk:= c mod d ; c:= d ; d:=merk until d= 0 ; ggTeiler:=c end; {of ggT} end. |
AW: Bruchrechenprogramm mit Selbsteingabe
Hab ich jetzt nicht ganz verstanden. Du gibst die Rechenaufgabe vor, der Benutzer gibt seine Lösung ein, und Du überprüfst die dann auf richtig oder falsch? Übrigens sollte man Randomize einmalig im Programm aufrufen.
|
AW: Bruchrechenprogramm mit Selbsteingabe
Zitat:
Genau! Kannst du mir da weiterhelfen? OK, ich lösch die anderen randomize! |
AW: Bruchrechenprogramm mit Selbsteingabe
Definiere die beiden Zahlen als Felder Deines Formulars und stelle sie in der Aufgabe dar. Bei der Lösung errechenst Du das Ergebnis und vergleichst mit der Eingabe... fertig.
Delphi-Quellcode:
type
TDeinForm = class(TForm) private Zahl1, Zahl2: integer; ... end; procedure TDeinForm.NeueAufgabe; begin Zahl1 := Random(...); Zahl2 := Random(...); EditZahl1.Text := IntToStr(Zahl1); EditZahl2.Text := IntToStr(Zahl2); end; procedure TDeinForm.ButtonLoesungClick(Sender: TObject); var Ergebnis: integer; begin Ergebnis := Berechnung_mit_Zahl1_und_Zahl2; if IntToStr(Ergebnis) = EditLoesung.Text then Applaus; end; |
AW: Bruchrechenprogramm mit Selbsteingabe
OK, soweit bin ich jetzt. Nun:
Wie überprüfe ich dann das Ergebnis eines Bruchs? Weil der Besteht ja aus 2 Editfeldern... |
AW: Bruchrechenprogramm mit Selbsteingabe
Ich kann Dir nicht folgen. Du hast doch beide Zahlen selbst zugewiesen, da musst Du doch nur das Ergebnis errechnen und mit der Eingabe vergleichen.
|
AW: Bruchrechenprogramm mit Selbsteingabe
Zitat:
Delphi-Quellcode:
In Zeile 74, "ggT(c,d,gggT)" zeigt er mir noch die Fehler "Operator oder Semikolon fehlt" und "Anweisung erforderlich, aber Ausdruck vom Typ 'Integer" gefunden an.
procedure TForm1.Button1Click(Sender: TObject);
begin randomize; Zahl1:= random(10) ; Zahl2:= random(10) ; Zahl3:=random(6) ; Zahl4:=random(6) ; EditZahl1.Text:= IntToStr(Zahl1) ; EditZahl2.Text:= IntToStr(Zahl2) ; EditZahl3.Text:= IntToStr(Zahl3) ; EditZahl4.Text:= IntToStr(Zahl4) ; end; procedure TForm1.Button2Click(Sender: TObject); var Ergebnis, ggT :integer ; begin Ergebnis:= Zahl1 + Zahl2 ; ggT(c,d, gggT) ; EditZahl6.Text:= gggt ; If IntToStr(Ergebnis) = EditZahl5.Text and InttoStr(ggT) = EditZahl6.Text then Showmessage('Sehr gut gemacht, weiter so!!!') ; end; procedure TForm1.ggT(c,d:integer; var ggTeiler: integer); var merk: integer; begin repeat merk:= c mod d ; c:= d ; d:=merk until d= 0 ; ggTeiler:=c end; {of ggT} end. Und wie siehts aus mit dem Vergleich der Ergbnisse, geht das so? |
AW: Bruchrechenprogramm mit Selbsteingabe
Delphi-Quellcode:
Bei mehreren Vergleichen mit Operatoren musst Du die Einzelvergleiche in Klammern setzen.
If (IntToStr(Ergebnis) = EditZahl5.Text) and (InttoStr(ggT) = EditZahl6.Text) then
[edit] Schlecht ausgedrückt. Besser: bei Verknüpfung mehrerer Bedingungen musst Du mindestens diejenigen, die Vergleichsoperatoren verwenden, in Klammern setzen.
Delphi-Quellcode:
[/edit]
if Bedingung1 and Bedingung2 then //geht
if Wert = 1 then //geht if Wert1 = 1 and Wert 2 = 42 then //geht nicht if (Wert1 = 1) and (Wert2 = 42) then //geht if Bedingung1 and (Wert1 = 100) then //geht if (Bedingung1) and (Wert1 = 100) then //geht |
AW: Bruchrechenprogramm mit Selbsteingabe
Zitat:
Danke. Trotzdem werden nun noch 3 Fehler angezeigt, welche wären: -Weiterhin "Operator oder Semikolon fehlt" und "Anweisung erforderlich,aber Ausdruck vom Typ Integer gefunden" bei "ggTeiler(c,d,gggT)" - "Nicht genügend wirkliche Parameter" beim Vergleich. danke, das du mir so hilfst! :) |
AW: Bruchrechenprogramm mit Selbsteingabe
Delphi-Quellcode:
ist eine Funktion oder Prozedur?
ggT(c,d, gggT) ;
Grüße Klaus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz