![]() |
Probleme beim Bruchrechner mit dem Kürzen!
Hi Leute,
muss morgen einen Bruchrechner in Informatik abgeben, soweit ist auch alles fertig bis auf das Kürzen, da weiß ich einfach nicht was falsch ist und da bräuchte ich mal eure Hilfe, dafür wäre ich euch sehr dankbar! Also das Programm haben wir in 3 Units aufgeteilt, auf der 1. Unit kann man entscheiden, ob man die gemischte Schreibform (Unit 3) haben will, also z.B. 1 1/2 oder die andere Schreibform(Unit 2) wie in dem Beispiel 3/2! Falls ich das grade genau falsch geschrieben habe, tuts mir Leid, aber ihr wisst, was ich meine! Da kann man das dann halt auswählen...sonst würde ich euch auch noch bitten, zu sagen, was ihr noch als Verbesserungsvorschläge hättet!
Delphi-Quellcode:
Unit Unit2;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm2 = class(TForm)u Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Edit1: TEdit; Edit2: TEdit; Edit6: TEdit; Edit7: TEdit; Button1: TButton; Edit9: TEdit; Edit10: TEdit; Button4: TButton; Button3: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form2: TForm2; implementation {$R *.dfm} procedure TForm2.Button1Click(Sender: TObject); var a,b,a1,b1,a2,b2,c2,d2,a3,b3:integer; begin a:=strtoint(edit1.text); b:=strtoint(edit2.text); a1:=strtoint(edit6.text); b1:=strtoint(edit7.text); a2:=a*b1; b2:=b*b1; c2:=a1*b; d2:=b1*b; a3:=a2+c2; b3:=d2; edit9.Text:=inttostr(a3); edit10.Text:=inttostr(b3); end; procedure TForm2.Button2Click(Sender: TObject); var a,b,a1,b1,a2,b2,c2,d2,a3,b3:integer; begin a:=strtoint(edit1.text); b:=strtoint(edit2.text); a1:=strtoint(edit6.text); b1:=strtoint(edit7.text); a2:=a*b1; b2:=b*b1; c2:=a1*b; d2:=b1*b; a3:=a2-c2; b3:=d2; edit9.Text:=inttostr(a3); edit10.Text:=inttostr(b3); end; procedure TForm2.Button3Click(Sender: TObject); var a,b,a1,b1,a2,b2:integer; begin a:=strtoint(edit1.text); b:=strtoint(edit2.text); a1:=strtoint(edit6.text); b1:=strtoint(edit7.text); a2:=a*a1; b2:=b*b1; edit9.Text:=inttostr(a2); edit10.Text:=inttostr(b2); end; procedure TForm2.Button4Click(Sender: TObject); var a,b,c,d,a1,b1,c1,d1,a2,b2:integer; begin a:=strtoint(edit1.text); b:=strtoint(edit2.text); a1:=strtoint(edit6.text); b1:=strtoint(edit7.text); a2:=a*b1; b2:=b*a1; edit9.Text:=inttostr(a2); edit10.Text:=inttostr(b2); end; end. |
Re: Probleme beim Bruchrechner mit dem Kürzen!
Hallo und Willkommen in der DP :dp: ,
wenn ich das Problem richtig verstanden habe, sollten div und mod Deine Freunde sein. |
Re: Probleme beim Bruchrechner mit dem Kürzen!
Schau dir mal den
![]() Damit findet man den grössten gemeinsamen Teiler (GGT) zweier Zahlen. Und den GGT braucht man tzum Kürzen. |
Re: Probleme beim Bruchrechner mit dem Kürzen!
Hi zurück,
vielleicht werdet ihr mich auslachen, aber ich habe echt null Ahnung von Delphi... Also das haben ein Freund und ich zusammengemacht und geben es morgen zusammen ab, aber er hat mehr Ahnung davon als ich, aber jetzt kommt er auch nicht mehr weiter, habe auch schon gegoogelt, aber kapier trotzdem kein Wort! |
Re: Probleme beim Bruchrechner mit dem Kürzen!
Außerdem kommt jetzt noch ein weiteres Problem hinzu!
Wir wissen nicht, wie wir das in die Schreibweise mit ganzen Zahlen z.B. 1 1/2 zurückführen sollen, d.h. wir wissen schon wie es "hingeht", da ist das ja einfach, einfach die Zahl vor dem Bruch mit dem Nenner multiplizieren und zum Zähler addieren, aber zurück!? |
Re: Probleme beim Bruchrechner mit dem Kürzen!
Also, es geht darum, aus z.B. "7/4" "1 3/4" zumachen, oder?
|
Re: Probleme beim Bruchrechner mit dem Kürzen!
Zitat:
Jap, genau das meine ich, das ist ja acuh zum Kürzen ein bisschen ähnlich, weil man ja auch Teilen muss und sowas, davon haben wir halt net wirklich so viel Ahnung... Den euklidschen Logarithmus hatte ich mir schon angeguckt, aber wie bitte soll ich das denn auf Delphi umschreiben? Also ich habe echt so gut wie null Ahnung von Delphi! |
Re: Probleme beim Bruchrechner mit dem Kürzen!
Mal von der Darstellung abgesehen: div liefert Dir das Ergebnis einer ganzzahligen Division, mod liefert den entsprechenden Rest. Also ergibt 3 div 2 dann 1, 3 mod 2 ergibt auch 1. Also hast Du die ganze Zahl 1 als Ergebnis der Division, als Rest bleibt 1 (das ist der Zähler von 1/2).
|
Re: Probleme beim Bruchrechner mit dem Kürzen!
Danke schonmal, das habe ich schonmal verstanden?
Aber wie schreibe ich das jetzt in Delphi? |
Re: Probleme beim Bruchrechner mit dem Kürzen!
Delphi-Quellcode:
So ungefähr könnte es aussehen. Ist lediglich nur ein Beispiel, welches Du auf Dein Programm anpassen musst.
a := StrToInt(Edit1.Text) div StrToInt(Edit2.text);
b := StrToInt(Edit1.Text) mod StrToInt(Edit2.Text); Label1.Caption := IntToStr(a) + ' ' + IntToStr(b) + '/2'; |
Re: Probleme beim Bruchrechner mit dem Kürzen!
Dank dir, werde mich damit schonmal auseinandersetzen!
Und wie mache ich das dann am besten mit dem Kürzen? Sorry Leute, ihr regt euch gewiss voll auf, aber ich hab echt keine Ahnung und ich habe eigentlich keine Lust 0 Punkte zu kriegen :-( Hoffe ihr versteht mich ein bisschen! |
Re: Probleme beim Bruchrechner mit dem Kürzen!
Was meinst Du denn mit Kürzen, den ggT?
|
Re: Probleme beim Bruchrechner mit dem Kürzen!
Liste der Anhänge anzeigen (Anzahl: 1)
AAAAlso:
ich hab mal folgendes geschrieben:
Delphi-Quellcode:
So, jetzt müsste es aber passen :feuerchen:
var ganzzahlig, rest : integer;
procedure KlGemTeiler(a,b : integer); begin ganzzahlig := a div b; rest := a-ganzzahlig*b; end; procedure TForm1.Button1Click(Sender: TObject); var a,b : integer; begin a := StrToInt(edit1.Text); b := StrToInt(edit2.Text); KlGemTeiler(a,b); Label1.Caption := IntToStr(ganzzahlig); Label2.Caption := IntToStr(rest); Label3.Caption := IntToStr(b); end; [Edit] Es reicht ja ne procedure... [/Edit] |
Re: Probleme beim Bruchrechner mit dem Kürzen!
Zitat:
Edit: Immer dieser roter Kasten |
Re: Probleme beim Bruchrechner mit dem Kürzen!
[OT] Warum kommen in letzter Zeit eigentlich so viele User "auf den letzten Drücker" mit ihren Aufgaben an? Sollen wir die lösen? [/OT]
|
Re: Probleme beim Bruchrechner mit dem Kürzen!
Hi,
Zitat:
Mfg FAlter |
Re: Probleme beim Bruchrechner mit dem Kürzen!
Zitat:
denke immer noch, dass 'ne eigene rubrik für hausaufgaben/schüler und studenten nicht schlecht wär ... :angel2: |
Re: Probleme beim Bruchrechner mit dem Kürzen!
Wir helfen ja gerne, aber die Fragenden sollten sich und uns doch zumindest soviel Zeit lassen, das Problem mit Hilfe zur Selbsthilfe selbstständig zu lösen.
|
Re: Probleme beim Bruchrechner mit dem Kürzen!
Zitat:
|
Re: Probleme beim Bruchrechner mit dem Kürzen!
Und somit sind beide Probleme gelöst?
Probiere das als einzubauen, aber kriegs immoment noch nicht hin! |
Re: Probleme beim Bruchrechner mit dem Kürzen!
Delphi-Quellcode:
unit Unit2;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm2 = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Edit1: TEdit; Edit2: TEdit; Edit6: TEdit; Edit7: TEdit; Button1: TButton; Edit9: TEdit; Edit10: TEdit; Button4: TButton; Button3: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form2: TForm2; implementation {$R *.dfm} function ggT(x,y:Integer):Integer; Begin While x<>y do Begin If x>y then x:=x-y else y:=y-x; End; result:=x; End; //------------------------------------------------ function kgV(x,y:Integer):Integer; Begin result:=x*y div ggT(x,y); End; //------------------------------------------------ procedure kuerzen(VAR a,b : Integer); Var Teiler:Integer; Begin If (a<>0) and (b<>0) // ansonsten Sonderfälle !!! then begin Teiler:=ggT(a,b); a:=a div Teiler; b:=b div Teiler; end; End; procedure TForm2.Button1Click(Sender: TObject); var a,b,a1,b1,a2,b2,c2,d2,a3,b3:integer; begin a:=strtoint(edit1.text); b:=strtoint(edit2.text); a1:=strtoint(edit6.text); b1:=strtoint(edit7.text); a2:=a*b1; b2:=b*b1; c2:=a1*b; d2:=b1*b; a3:=a2+c2; b3:=d2; kuerzen(a3,b3) edit9.Text:=inttostr(a3); edit10.Text:=inttostr(b3); So habe ichs jetzt gemacht, aber er kürzt trotzdem nicht, wodran liegt es, ich weiß nicht mehr weiter! |
Re: Probleme beim Bruchrechner mit dem Kürzen!
Könntest Du bitte mal Delphi-Tags setzen?
|
Re: Probleme beim Bruchrechner mit dem Kürzen!
Ich bin total am verzweifeln, ich weiß nicht, was ich noch machen soll, danke für eure Hilfe mit den Texten, aber wo und wie soll ich die denn einbauen, ich habe echt keine Ahnung, tut mir Leid...!
|
Re: Probleme beim Bruchrechner mit dem Kürzen!
Ich frage nochmal zur Sicherheit: was meinst Du mit Kürzen? 7/4 -> 1 3/4?
|
Re: Probleme beim Bruchrechner mit dem Kürzen!
Ne, ich habe 2 Probleme:
Einmal muss die Zahl noch gekürzt werden, so dass z.B. aus 4/8 1/2 wird und das 2. Problem ist, dass z.B. aus 9/8 1 1/8 werden muss! |
Re: Probleme beim Bruchrechner mit dem Kürzen!
Zitat:
|
Re: Probleme beim Bruchrechner mit dem Kürzen!
Delphi-Quellcode:
Hier ist Unit3 mit der gemischten Schreibweise, aber da funktioniert leider gar nichts...!
unit Unit3;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm3 = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit5: TEdit; Edit6: TEdit; Edit7: TEdit; Button1: TButton; Edit8: TEdit; Edit9: TEdit; Edit10: TEdit; Button4: TButton; Button3: TButton; Button2: TButton; procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form3: TForm3; implementation {$R *.dfm} //------------------------------------------------ procedure TForm3.Button1Click(Sender: TObject); var a,b,c,d,a1,b1,c1,d1,a2,b2,c2,d2,a3,b3:integer; begin a:=strtoint(edit1.text); b:=strtoint(edit2.text); c:=strtoint(edit3.text); d:=c*b; a1:=strtoint(edit6.text); b1:=strtoint(edit7.text); c1:=strtoint(edit5.text); d1:=c1*b1; a2:=d*b1; b2:=b*b1; c2:=d1*b; d2:=b1*b; a3:=a2+c2; b3:=d2; edit9.Text:=inttostr(a3); edit10.Text:=inttostr(b3); end; procedure TForm3.Button2Click(Sender: TObject); var a,b,c,d,a1,b1,c1,d1,a2,b2,c2,d2,a3,b3:integer; begin a:=strtoint(edit1.text); b:=strtoint(edit2.text); c:=strtoint(edit3.text); d:=c*b; a1:=strtoint(edit6.text); b1:=strtoint(edit7.text); c1:=strtoint(edit5.text); d1:=c1*b1; a2:=d*b1; b2:=b*b1; c2:=d1*b; d2:=b1*b; a3:=a2-c2; b3:=d2; edit9.Text:=inttostr(a3); edit10.Text:=inttostr(b3); end; procedure TForm3.Button3Click(Sender: TObject); var a,b,c,d,a1,b1,c1,d1,a3,b3:integer; begin a:=strtoint(edit1.text); b:=strtoint(edit2.text); c:=strtoint(edit3.text); d:=c*b; a1:=strtoint(edit6.text); b1:=strtoint(edit7.text); c1:=strtoint(edit5.text); d1:=c1*b1; a3:=d*d1; b3:=b*b1; edit9.Text:=inttostr(a3); edit10.Text:=inttostr(b3); end; procedure TForm3.Button4Click(Sender: TObject); var a,b,c,d,a1,b1,c1,d1,a3,b3:integer; begin a:=strtoint(edit1.text); b:=strtoint(edit2.text); c:=strtoint(edit3.text); d:=c*b; a1:=strtoint(edit6.text); b1:=strtoint(edit7.text); c1:=strtoint(edit5.text); d1:=c1*b1; a3:=d*b1; b3:=b*d1; edit9.Text:=inttostr(a3); edit10.Text:=inttostr(b3); end; end. |
Re: Probleme beim Bruchrechner mit dem Kürzen!
Zitat:
Also wenn du meinst, wie ich das mathematisch lösen würde, dann würde ich einfach beim Kürzen den ggT suchen und dann durch den ggT teilen, jo und beim umschreiben, da weiß ich nicht so ganz! |
Re: Probleme beim Bruchrechner mit dem Kürzen!
Ich weiß nicht, ob es gerade ausversehen war, aber irgendwie hab ich das Gefühl, dass mein Beitrag ein paar posts zuvor noch nicht einmal gelesen wurde :?
Im Prinzip hab ich da nämlich genau das Problem, dass aus 9/8 1 1/8 wird behandelt :wink: Gruß, Elko |
Re: Probleme beim Bruchrechner mit dem Kürzen!
Doch schon, aber ich kriege es einfach nicht hin, das bei mir einzubauen...
habe es so probiert:
Delphi-Quellcode:
implementation
{$R *.dfm} var ganzzahlig, rest : integer; function KlGemTeiler(a3,b3 : integer) : integer; begin ganzzahlig := a3 div b3; rest := a3-ganzzahlig*b3; end; procedure TForm3.Button1Click(Sender: TObject); var a,b,c,d,a1,b1,c1,d1,a2,b2,c2,d2,a3,b3:integer; begin a:=strtoint(edit1.text); b:=strtoint(edit2.text); c:=strtoint(edit3.text); d:=c*b; a1:=strtoint(edit6.text); b1:=strtoint(edit7.text); c1:=strtoint(edit5.text); d1:=c1*b1; a2:=d*b1; b2:=b*b1; c2:=d1*b; d2:=b1*b; a3:=a2+c2; b3:=d2; KlGemTeiler(a3,b3); edit8.Text:= IntToStr(ganzzahlig); edit9.Text:= IntToStr(rest); edit10.Text:= IntToStr(b3); end; |
Re: Probleme beim Bruchrechner mit dem Kürzen!
|
Re: Probleme beim Bruchrechner mit dem Kürzen!
Zitat:
|
Re: Probleme beim Bruchrechner mit dem Kürzen!
Wie sage ich das Delphi, das ist doch hier die Frage!?
|
Re: Probleme beim Bruchrechner mit dem Kürzen!
Hast Du meinen Post gelesen? :roll:
|
Re: Probleme beim Bruchrechner mit dem Kürzen!
[google]kürzen pascal[/google]
|
Re: Probleme beim Bruchrechner mit dem Kürzen!
Hmmm, musste gerade über mich selbst schmunzeln... klar ist der kleinste gem. Teiler immer 1 :lol: , ich hab mich nur beim Funktionsnamen vertippt, sie rechnet ja das richtige aus :mrgreen:
david, vielleicht wäre es sinnvoll, wenn du einen Screenshot anhängen würdest. Dann wüssten wir, was in den einzelnen Editfeldern steht und was du damit berechnen willst. Die Prozedur KlGemTeiler (eigentlich GrGemTeiler :P) rechnet gibt ja dann den Bruch mit Ganzzahlanteil aus. :zwinker: Gruß, Elko |
Re: Probleme beim Bruchrechner mit dem Kürzen!
Liste der Anhänge anzeigen (Anzahl: 1)
Hier mal ein Beispiel, wie Brüche kürzen und vereinfachen kann...
Quick & Dirty... :wink: Ich nehm mal an, unsern Treadersteller wird es wohl nix mehr bringen, aber ev. jemand anderes... |
Re: Probleme beim Bruchrechner mit dem Kürzen!
Zitat:
|
Re: Probleme beim Bruchrechner mit dem Kürzen!
![]() |
Re: Probleme beim Bruchrechner mit dem Kürzen!
:wink:
Aber vielleicht bleibt er ja an dem Problem dran, nachdem er es Gestern nicht hinbekommen hat... Zumindest war das damals bei mir noch selbstverständlich, denn man wollte ja was lernen. :stupid: Das Besipiel von mir zeigt auch schön, wie man Berechnungen von der Oberfläche trennt, zumal man warum auch immer er das machen wollte keine 3 Forms braucht um Daten verschieden zu formatieren... Bye Christian |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:34 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