AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Prism Bruchrechentrainer programmieren...Hilfe?!?!

Bruchrechentrainer programmieren...Hilfe?!?!

Ein Thema von Ypsilon · begonnen am 29. Mai 2006 · letzter Beitrag vom 29. Mai 2006
Antwort Antwort
Ypsilon

Registriert seit: 29. Mai 2006
3 Beiträge
 
#1

Bruchrechentrainer programmieren...Hilfe?!?!

  Alt 29. Mai 2006, 18:57
Hallo!

Also, erstmal zur Erklärung...ich bin Schülerin an einem Gymnasium und habe nun im 2ten HJ Informatik.
Wir sollen als Hausaufgabe ein Programm zur Übung von Bruchrechenarten schreiben,was ja ansich kein Problem darstellen sollte. ABER jetzt wo mein Programm soweit fertig ist tritt ein komisches Phänomen in Aktion :

1.Bei Betätigung des BtLeicht und darauf hin der Betätigung des BtPlus erscheint die Aufgabe wie gewünscht...Jedoch rechnet der Computer anstatt Bruch1 + Bruch2 Bruch1 - Bruch2 ....Wo habe ich mich hier verprogrammiert ?

2.Bei Betätigung des BtLeicht und darauf hin der Betätigung des BtMinus erscheint die Aufgabe wie gewünscht...Jedoch erkennt der PC nicht, dass die Nenner der Brüche gleich sind und subtrahiert diese als ob die Nenner verschieden wären...




BtMal,BtDurch auf Leicht sowie alle Bt's auf Mittel & Schwer scheinen einwandfrei zu funktionieren...

Kann mir vielleicht einer von euch Assen weiterhelfen??? Ich verzweifele nun schon seit ca. 10 Stunden an diesem kleinen Fehler !!!!


THX im Vorraus!
MFG Ypsilon

Code:
unit mB;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, jpeg;

type
  TForm1 = class(TForm)
    PUeberschrift: TPanel;
    GroupBox1: TGroupBox;
    BtPlus: TButton;
    BtMinus: TButton;
    BtMal: TButton;
    BtDurch: TButton;
    GroupBox2: TGroupBox;
    BtLeicht: TButton;
    BtMittel: TButton;
    BtSchwer: TButton;
    PZahlA: TPanel;
    PRZ: TPanel;
    PZahlB: TPanel;
    PGleich: TPanel;
    PErgebnis: TPanel;
    LZaehler1: TLabel;
    LNenner1: TLabel;
    LZaehler2: TLabel;
    LNenner2: TLabel;
    LZaehlerE: TLabel;
    LNennerE: TLabel;
    GroupBox3: TGroupBox;
    EdZaehlerE: TEdit;
    LBruchstrich: TLabel;
    EdNennerE: TEdit;
    GroupBox4: TGroupBox;
    BtErgebnis: TButton;
    ImVerloren: TImage;
    ImGewonnen: TImage;
    LRichtig: TLabel;
    LFalsch: TLabel;
    LVersuche: TLabel;
    EdRichtig: TEdit;
    EdFalsch: TEdit;
    EdVersuche: TEdit;
    ImStern1: TImage;
    ImStern2: TImage;
    ImStern3: TImage;
    ImStern4: TImage;
    BtLoesung: TButton;
    PGewonnen: TPanel;
    procedure FormCreate(Sender: TObject);
    procedure RechenzeichenClick(Sender: TObject);
    procedure BtLeichtClick(Sender: TObject);
    procedure BtErgebnisClick(Sender: TObject);
    procedure BtMittelClick(Sender: TObject);
    procedure BtSchwerClick(Sender: TObject);
    procedure EdNennerEChange(Sender: TObject);
    procedure EdZaehlerEChange(Sender: TObject);
    procedure BtLoesungClick(Sender: TObject);
    procedure EdRichtigChange(Sender: TObject);
    procedure EdRichtigClick(Sender: TObject);
    procedure EdFalschClick(Sender: TObject);
    procedure EdVersucheClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Zaehler1,Zaehler2,ZaehlerE,Nenner1,Nenner2,NennerE,NennerEE,ZaehlerEE,Versuch,Richtig,Falsch : integer;


implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
Randomize;
ImGewonnen.visible := false;
ImVerloren.visible := false;
end;

procedure TForm1.BtLeichtClick(Sender: TObject);
begin
 Zaehler1 := random (11)+1;
 Zaehler2 := random (11)+1;
 Nenner1 := random (11)+1;
 Nenner2 := Nenner1 ;
 LNennerE.Visible := false;
 LZaehlerE.Visible := false;
  repeat Zaehler2 := random(11) until
   Zaehler2 < Zaehler1;
 LZaehler2.Caption := IntToStr (Zaehler2);
 LZaehler1.Caption := IntToStr (Zaehler1);
 LNenner1.Caption := IntToStr (Nenner1);
 LNenner2.Caption := IntToStr (Nenner1);
end;


procedure TForm1.RechenzeichenClick(Sender: TObject);
begin
 if Sender = BtPlus then
 begin
  PRZ.Caption := '+';
  if Nenner1 <> Nenner2 then
   begin
    NennerE := Nenner1*Nenner2;
    ZaehlerE := (Zaehler1*Nenner2)+(Zaehler2*Nenner1);
   end
  else if Nenner1 = Nenner2 then
   begin
    NennerE := Nenner1;
    ZaehlerE := Zaehler1+Zaehler2;
   end;
 end;
 if Sender = BtMinus then
  begin
   PRZ.Caption := '-';
   if Nenner1 <> Nenner2 then
    PRZ.Caption := '-';
    NennerE := Nenner1*Nenner2;
    ZaehlerE := (Zaehler1*Nenner2)-(Zaehler2*Nenner1);
  end
 else if Nenner1 = Nenner2 then
  begin
   NennerE := Nenner1;
   ZaehlerE := Zaehler1-Zaehler2;
  end;
 if Sender = BtMal then
  begin
   PRZ.Caption := 'x';
   NennerE := Nenner1*Nenner2;
   ZaehlerE := Zaehler1*Zaehler2;
  end;
 if Sender = BtDurch then
  begin
   PRZ.Caption := ':';
   NennerE := Nenner1*Zaehler2;
   ZaehlerE := Nenner2*Zaehler1;
  end;
 LZaehlerE.Caption := IntToStr (ZaehlerE);
 LNennerE.Caption := IntToStr (NennerE);



end;



procedure TForm1.BtErgebnisClick(Sender: TObject);
begin
  Versuch := StrToInt (EdVersuche.Text);
  NennerEE := StrToInt (EdNennerE.Text);
  ZaehlerEE := StrToInt (EdZaehlerE.Text);
  EdVersuche.Text := IntToStr (Versuch +1) ;
   if ZaehlerEE = ZaehlerE then
    begin
     Richtig := StrToInt (EdRichtig.Text);
     MessageDlg ('Richtig!',mtInformation,[mbOK],0);
     LNennerE.Visible := true;
     LZaehlerE.Visible := true;
     ImGewonnen.Visible := true;
     EdRichtig.Text := IntToStr (Richtig+1)
    end
   else if ZaehlerEE <> ZaehlerE then
    begin
     Falsch := StrToInt (EdFalsch.Text);
     MessageDlg ('Falsch! Versuchen Sie es erneut!',mtWarning,[mbRetry],0);
     ImVerloren.Visible := true;
     EdFalsch.Text := IntToStr (Falsch+1);
   end

end;

procedure TForm1.BtMittelClick(Sender: TObject);
begin
 Zaehler1 := random (21)+1;
 Zaehler2 := random (21)+1;
 Nenner1 := random (21)+1;
 Nenner2 := random (21)+1;
 LNennerE.Visible := false;
 LZaehlerE.Visible := false;
 repeat Zaehler2 := random(21) until
  Zaehler2 < Zaehler1;

 LZaehler2.Caption := IntToStr (Zaehler2);
 LZaehler1.Caption := IntToStr (Zaehler1);
 LNenner1.Caption := IntToStr (Nenner1);
 LNenner2.Caption := IntToStr (Nenner2);
end;

procedure TForm1.BtSchwerClick(Sender: TObject);
begin
 Zaehler1 := random (101)+1;
 Zaehler2 := random (101)+1;
 Nenner1 := random (101)+1;
 Nenner2 := random (101)+1;
 LNennerE.Visible := false;
 LZaehlerE.Visible := false;
 repeat Nenner2 := random(101)+1 until
  Nenner2 <> Nenner1;
 repeat Zaehler2 := random(101) until
  Zaehler2 < Zaehler1;

 LZaehler2.Caption := IntToStr (Zaehler2);
 LZaehler1.Caption := IntToStr (Zaehler1);
 LNenner1.Caption := IntToStr (Nenner1);
 LNenner2.Caption := IntToStr (Nenner2);
 LNennerE.Caption := IntToStr (NennerE);
 LZaehlerE.Caption := IntToStr (ZaehlerE);
end;

procedure TForm1.EdNennerEChange(Sender: TObject);
begin
  ImGewonnen.Visible := false;
  ImVerloren.Visible := false;
end;

procedure TForm1.EdZaehlerEChange(Sender: TObject);
begin
  ImGewonnen.Visible := false;
  ImVerloren.Visible := false;

end;

procedure TForm1.BtLoesungClick(Sender: TObject);
begin
  LNennerE.Visible := True;
  LZaehlerE.Visible := True;
  Falsch := StrToInt (EdFalsch.Text);
  EdFalsch.Text := IntToStr (Falsch+1);
  Versuch := StrToInt (EdVersuche.Text);
  EdVersuche.Text := IntToStr (Versuch +1) ;
end;

procedure TForm1.EdRichtigChange(Sender: TObject);
begin
  if EdRichtig.Text = '10' then
   begin
    ImStern1.Visible := True;
    ImStern2.Visible := False;
    ImStern3.Visible := False;
    ImStern4.Visible := False;
   end
  else if EdRichtig.Text = '20' then
   begin
    ImStern1.Visible := True;
    ImStern2.Visible := True;
    ImStern3.Visible := False;
    ImStern4.Visible := False;
   end
  else if EdRichtig.Text = '30' then
   begin
    ImStern1.Visible := True;
    ImStern2.Visible := True;
    ImStern3.Visible := True;
    ImStern4.Visible := False;
   end
  else if EdRichtig.Text = '40' then
   begin
    ImStern1.Visible := True;
    ImStern2.Visible := True;
    ImStern3.Visible := True;
    ImStern4.Visible := True;
   end
  else if EdRichtig.Text = '50' then
   begin
    ImStern1.Visible := False;
    ImStern2.Visible := False;
    ImStern3.Visible := False;
    ImStern4.Visible := False;
    PGewonnen.Visible := True;
   end
end;

procedure TForm1.EdRichtigClick(Sender: TObject);
begin
 MessageDlg ('Cheaten?! Na, na, na...so aber nicht!!!Der Vesuch gibt leider 5 Punkte Abzug!',mtWarning,[mbOK],0);
 Richtig := StrToInt (EdRichtig.Text);
 EdRichtig.Text := IntToStr (Richtig-5);

end;

procedure TForm1.EdFalschClick(Sender: TObject);
begin
 MessageDlg ('Cheaten?! Na, na, na...so aber nicht!!!Der Vesuch gibt leider 5 Punkte obendrauf!',mtWarning,[mbOK],0);
 Falsch := StrToInt (EdFalsch.Text);
 EdFalsch.Text := IntToStr (Falsch+5);
end;

procedure TForm1.EdVersucheClick(Sender: TObject);
begin
 MessageDlg ('Cheaten?! Na, na, na...so aber nicht!!!Der Vesuch gibt leider 5 Punkte obendrauf!',mtWarning,[mbOK],0);
 Versuch := StrToInt (EdVersuche.Text);
 EdVersuche.Text := IntToStr (Versuch+5);
end;

end.
  Mit Zitat antworten Zitat
Benutzerbild von Ultimator
Ultimator

Registriert seit: 17. Feb 2004
Ort: Coburg
1.860 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Bruchrechentrainer programmieren...Hilfe?!?!

  Alt 29. Mai 2006, 18:59
Ich fürchte, ohne deinen Quelltext (oder zumindest Ausschnitte davon) wirds schwierig, dir zu sagen, wo die Fehler sind
Julian J. Pracht
  Mit Zitat antworten Zitat
Ypsilon

Registriert seit: 29. Mai 2006
3 Beiträge
 
#3

Re: Bruchrechentrainer programmieren...Hilfe?!?!

  Alt 29. Mai 2006, 19:00
habs grade noch geändert...sry
Proud to be top dicht ~Alki#2~
  Mit Zitat antworten Zitat
sir-archimedes

Registriert seit: 2. Jan 2006
Ort: Münster
167 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Bruchrechentrainer programmieren...Hilfe?!?!

  Alt 29. Mai 2006, 19:06
Also das mit dem Plus sehe ich nicht sofort. Das mit dem Minus umso schneller:

Delphi-Quellcode:
if Sender = BtMinus then
  begin
   PRZ.Caption := '-';
   if Nenner1 <> Nenner2 then
    PRZ.Caption := '-';
    NennerE := Nenner1*Nenner2;
    ZaehlerE := (Zaehler1*Nenner2)-(Zaehler2*Nenner1);
  end
Du setzt doch NennerE := Nenner1*Nenner2; ganz unabhängig davon ob die beiden Nenner gleich sind. Das kann so nicht wie gewünscht klappen...
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

Re: Bruchrechentrainer programmieren...Hilfe?!?!

  Alt 29. Mai 2006, 19:07
Dein Sourcecode ist ziemlich schlampig formatiert und daher kommt auch dein Fehler:
Delphi-Quellcode:
if Sender = BtMinus then
  begin
    PRZ.Caption := '-';
    if Nenner1 <> Nenner2 then
    begin // hat gefehlt
      PRZ.Caption := '-';
      NennerE := Nenner1*Nenner2;
      ZaehlerE := (Zaehler1*Nenner2)-(Zaehler2*Nenner1);
    end
    else if Nenner1 = Nenner2 then
  end; // hat gefehlt
Empfehlung:
nach begin immer um 3 Leerzeichen einrücken. Borland rückt um 2 Leerzeichen ein.
Das ist Geschmackssache; wichtig ist, dass man es immer gleich macht.
Andreas
  Mit Zitat antworten Zitat
Ypsilon

Registriert seit: 29. Mai 2006
3 Beiträge
 
#6

Re: Bruchrechentrainer programmieren...Hilfe?!?!

  Alt 29. Mai 2006, 19:25
cool,danke schonmal...jetzt is nur noch 1 fehler drinne
Proud to be top dicht ~Alki#2~
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 14:38 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