Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Bruchrechenprogramm mit Selbsteingabe (https://www.delphipraxis.net/165299-bruchrechenprogramm-mit-selbsteingabe.html)

timmy19 22. Dez 2011 13:32

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.

DeddyH 22. Dez 2011 14:03

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.

timmy19 22. Dez 2011 14:34

AW: Bruchrechenprogramm mit Selbsteingabe
 
Zitat:

Zitat von DeddyH (Beitrag 1142747)
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.


Genau! Kannst du mir da weiterhelfen?

OK, ich lösch die anderen randomize!

DeddyH 22. Dez 2011 14:40

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;

timmy19 22. Dez 2011 15:21

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...

DeddyH 22. Dez 2011 15:27

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.

timmy19 22. Dez 2011 15:38

AW: Bruchrechenprogramm mit Selbsteingabe
 
Zitat:

Zitat von DeddyH (Beitrag 1142760)
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.

Ich zeig mal kurz den Quelltext:

Delphi-Quellcode:
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.
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.

Und wie siehts aus mit dem Vergleich der Ergbnisse, geht das so?

DeddyH 22. Dez 2011 15:41

AW: Bruchrechenprogramm mit Selbsteingabe
 
Delphi-Quellcode:
If (IntToStr(Ergebnis) = EditZahl5.Text) and (InttoStr(ggT) = EditZahl6.Text) then
Bei mehreren Vergleichen mit Operatoren musst Du die Einzelvergleiche in Klammern setzen.

[edit] Schlecht ausgedrückt. Besser: bei Verknüpfung mehrerer Bedingungen musst Du mindestens diejenigen, die Vergleichsoperatoren verwenden, in Klammern setzen.

Delphi-Quellcode:
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
[/edit]

timmy19 22. Dez 2011 15:50

AW: Bruchrechenprogramm mit Selbsteingabe
 
Zitat:

Zitat von DeddyH (Beitrag 1142762)
Delphi-Quellcode:
If (IntToStr(Ergebnis) = EditZahl5.Text) and (InttoStr(ggT) = EditZahl6.Text) then
Bei mehreren Vergleichen mit Operatoren musst Du die Einzelvergleiche in Klammern setzen.


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! :)

Klaus01 22. Dez 2011 15:55

AW: Bruchrechenprogramm mit Selbsteingabe
 
Delphi-Quellcode:
ggT(c,d, gggT) ;
ist eine Funktion oder Prozedur?

Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:38 Uhr.
Seite 1 von 4  1 23     Letzte »    

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