AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Bruchrechnung und das kürzen...

Offene Frage von "Anigmos"
Ein Thema von Anigmos · begonnen am 12. Feb 2007 · letzter Beitrag vom 12. Mai 2009
Antwort Antwort
Seite 1 von 3  1 23      
Anigmos

Registriert seit: 6. Sep 2006
15 Beiträge
 
#1

Bruchrechnung und das kürzen...

  Alt 12. Feb 2007, 17:09
Hi,

Ich habe ein Problem ich wollte/muss eine Art Bruch-Taschenrechner programmieren der die Zahlen auch kürzt...nun habe ich ein Problem ich habe alles fertig bis auf das kürzen, die ggt funktion ist auch schon geschrieben... nur muss man sie ja auch irgendwie einbinden um so einen bruch als gemischte zahl angeben zu können. Wie mach ich das???


Hier das programm:
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Zaehler1Edit: TEdit;
    Nenner1Edit: TEdit;
    OperatorEdit: TEdit;
    Zaehler2Edit: TEdit;
    Nenner2Edit: TEdit;
    RechnenButton: TButton;
    ErgebnisZaehlerEdit: TEdit;
    ErgebnisNennerEdit: TEdit;
    GanzzahlEdit: TEdit;
    EndeButton: TButton;
    procedure EndeButtonClick(Sender: TObject);
    procedure RechnenButtonClick(Sender: TObject);
    procedure ErgebnisZaehlerEditChange(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function ggT(a, b:Integer):Integer;
var
res:Integer;
begin
   repeat
          res := a mod b;
          a:=b;
          b:=res;
   until b <> 0;
end;

{*
procedure B_kuerzen(..);          <------ soll auch verwendet werden
}


procedure B_multiplizieren(var z1,z2,n1,n2,zerg,nennerg:real);
begin
zerg:= z1*z2;
nennerg:=n1*n2;
end;


procedure B_dividieren(var z1,z2,n1,n2,zerg,nennerg:real);
begin
zerg:= z1*n2;
nennerg:=n1*z2;
end;

procedure b_addieren(var z1,z2,n1,n2,zerg,nennerg:real);
begin
zerg:=(z1*n1)+(z2*n1);
nennerg:=n1*n2
end;

procedure B_subtrahieren(var z1,z2,n1,n2,zerg,nennerg:real);
begin
zerg:=(z1*n1)-(z2*n1);
nennerg:=n1*n2
end;

procedure TForm1.EndeButtonClick(Sender: TObject);
begin
close
end;

procedure TForm1.RechnenButtonClick(Sender: TObject);
var z1,z2,n1,n2,zerg,nennerg:Real;
begin

z1:=strtofloat(Zaehler1Edit.text);
z2:=strtofloat(Zaehler2Edit.text);
n1:=strtofloat(nenner1edit.text);
n2:=strtofloat(nenner2edit.text);
if operatoredit.text = '*then B_multiplizieren(z1,z2,n1,n2,zerg,nennerg);
if operatoredit.text = '/then B_dividieren(z1,z2,n1,n2,zerg,nennerg);
if operatoredit.text = '+then B_addieren(z1,z2,n1,n2,zerg,nennerg);
if operatoredit.text = '-then B_subtrahieren(z1,z2,n1,n2,zerg,nennerg);
// Ausgabe
ErgebnisZaehlerEdit.text:=Floattostr(zerg);
ErgebnisNennerEdit.text:=Floattostr(nennerg);
end;

procedure TForm1.ErgebnisZaehlerEditChange(Sender: TObject);
begin

end;

end.
  Mit Zitat antworten Zitat
Sidorion

Registriert seit: 23. Jun 2005
403 Beiträge
 
#2

Re: Bruchrechnung und das kürzen...

  Alt 12. Feb 2007, 17:19
Zunächst: Deine Funktion ggT leifert nix zurück (nein falsch: die liefert irgendeinen Integer, was halt grad im Speicher steht). Also entweder res durch Result ersetzen oder Result:=res ans Ende einfügen.
Zum Kürzen: ggt mit Zähler und Nenner aufrufen und danach beide durch das Ergebnis von ggt teilen.
Manchmal sehen Dinge, die wie Dinge aussehen wollen mehr wie Dinge aus, als Dinge
<Esmerelda Wetterwachs>
  Mit Zitat antworten Zitat
Anigmos

Registriert seit: 6. Sep 2006
15 Beiträge
 
#3

Re: Bruchrechnung und das kürzen...

  Alt 12. Feb 2007, 17:27
also der ggt sollte eigentlich funktionieren hab das in nem anderen programm schon benutzt deswegen seh ich da kein problem oder doch?
Zitat:
Zum Kürzen: ggt mit Zähler und Nenner aufrufen und danach beide durch das Ergebnis von ggt teilen.
verstehe ich nicht so ganz

Delphi-Quellcode:
procedure B_kuerzen(var z1,z2,n1,n2,zerg,nennerg,ganerg:real);
begin
ganerg:= (ggt(a,b)/z1)7(ggt(a,b)/z2) //so?
end;
  Mit Zitat antworten Zitat
Benutzerbild von yörsch
yörsch

Registriert seit: 10. Jan 2007
Ort: Lampertheim
206 Beiträge
 
Delphi XE2 Architect
 
#4

Re: Bruchrechnung und das kürzen...

  Alt 13. Feb 2007, 09:43
Hai,
Delphi-Quellcode:
function ggT(a, b:Integer):Integer;
var
res:Integer;
begin
   repeat
          res := a mod b;
          a:=b;
          b:=res;
   until b <> 0;
end;
was für einen wert soll result (also das ergebnis haben ???)
wenn ich die Funktion sosehe dann wohl : result := res;
Jörg
have FUN
  Mit Zitat antworten Zitat
Benutzerbild von TonyR
TonyR

Registriert seit: 17. Jun 2006
Ort: Bautzen
503 Beiträge
 
FreePascal / Lazarus
 
#5

Re: Bruchrechnung und das kürzen...

  Alt 13. Feb 2007, 10:21
Zitat von Anigmos:
Delphi-Quellcode:
procedure B_kuerzen(var z1,z2,n1,n2,zerg,nennerg,ganerg:real);
begin
ganerg:= (ggt(a,b)/z1)7(ggt(a,b)/z2) //so? Eigentlich nicht, NEIN
end;
Ich finde mich hier überhaupt nicht rein, tut mir leid!

Warum hast du nicht TBruch als einen Record deklariert?
Delphi-Quellcode:
TBruch = record
  Zahler, Nenner: Integer;
end;
und jetz:
Delphi-Quellcode:
procedure kurzen(Ausgangsbruch, Ergebnisbruch: Tbruch);
begin
Ergebnisbruch.zahler:=Round(Ausgangsbruch.zahler div ggt(Ausgangsbruch.zahler,Ausgangsbruch.nenner));
Ergebnisbruch.nenner:=Round(Ausgangsbruch.nenner div ggt(Ausgangsbruch.zahler,Ausgangsbruch.nenner));
end;
Es ist unmöglich, witzig zu sein ohne ein bisschen Bosheit. Die Bosheit eines guten Witzes ist der Widerhaken, der ihn haften lässt. - Georg Christoph Lichtenberg
  Mit Zitat antworten Zitat
Anigmos

Registriert seit: 6. Sep 2006
15 Beiträge
 
#6

Re: Bruchrechnung und das kürzen...

  Alt 13. Feb 2007, 10:54
Zitat von yörsch:
Hai,
Delphi-Quellcode:
function ggT(a, b:Integer):Integer;
var
res:Integer;
begin
   repeat
          res := a mod b;
          a:=b;
          b:=res;
   until b <> 0;
end;
was für einen wert soll result (also das ergebnis haben ???)
wenn ich die Funktion sosehe dann wohl : result := res;
res hat das ergebnis a mod b ?



Zitat von TonyR:
Zitat von Anigmos:
Delphi-Quellcode:
procedure B_kuerzen(var z1,z2,n1,n2,zerg,nennerg,ganerg:real);
begin
ganerg:= (ggt(a,b)/z1)7(ggt(a,b)/z2) //so? Eigentlich nicht, NEIN
end;
Ich finde mich hier überhaupt nicht rein, tut mir leid!

Warum hast du nicht TBruch als einen Record deklariert?
Delphi-Quellcode:
TBruch = record
  Zahler, Nenner: Integer;
end;
und jetz:
Delphi-Quellcode:
procedure kurzen(Ausgangsbruch, Ergebnisbruch: Tbruch);
begin
Ergebnisbruch.zahler:=Round(Ausgangsbruch.zahler div ggt(Ausgangsbruch.zahler,Ausgangsbruch.nenner));
Ergebnisbruch.nenner:=Round(Ausgangsbruch.nenner div ggt(Ausgangsbruch.zahler,Ausgangsbruch.nenner));
end;
Das geht leider nicht...Wir dürfen nur mit mitteln Arbeiten, die wir schon hatten... Worin ich überhaupt keinen Sinn sehe aber das ist ein anderes Thema...
  Mit Zitat antworten Zitat
Benutzerbild von TonyR
TonyR

Registriert seit: 17. Jun 2006
Ort: Bautzen
503 Beiträge
 
FreePascal / Lazarus
 
#7

Re: Bruchrechnung und das kürzen...

  Alt 13. Feb 2007, 10:58
Aber ich hoffe du verstehst meine Vorgehensweise hier:
Delphi-Quellcode:
procedure kurzen(Ausgangsbruch, Ergebnisbruch: Tbruch);
begin

Ergebnisbruch.zahler:=Round(Ausgangsbruch.zahler div ggt(Ausgangsbruch.zahler,Ausgangsbruch.nenner));

Ergebnisbruch.nenner:=Round(Ausgangsbruch.nenner div ggt(Ausgangsbruch.zahler,Ausgangsbruch.nenner));

end;
So geht das nämlich => dürfte ja selbsterklärend sein
Und jetzt kannst du deine eigene Prozedur mit deinen 100 Variablen schreiben, oder nicht?
Es ist unmöglich, witzig zu sein ohne ein bisschen Bosheit. Die Bosheit eines guten Witzes ist der Widerhaken, der ihn haften lässt. - Georg Christoph Lichtenberg
  Mit Zitat antworten Zitat
Anigmos

Registriert seit: 6. Sep 2006
15 Beiträge
 
#8

Re: Bruchrechnung und das kürzen...

  Alt 13. Feb 2007, 11:06
Zitat von TonyR:
Aber ich hoffe du verstehst meine Vorgehensweise hier:
Delphi-Quellcode:
procedure kurzen(Ausgangsbruch, Ergebnisbruch: Tbruch);
begin

Ergebnisbruch.zahler:=Round(Ausgangsbruch.zahler div ggt(Ausgangsbruch.zahler,Ausgangsbruch.nenner));

Ergebnisbruch.nenner:=Round(Ausgangsbruch.nenner div ggt(Ausgangsbruch.zahler,Ausgangsbruch.nenner));

end;
So geht das nämlich => dürfte ja selbsterklärend sein
Und jetzt kannst du deine eigene Prozedur mit deinen 100 Variablen schreiben, oder nicht?
ja ist es war irgendwie grade neben mir aber da kommt mir ein neues problem in denn Sinn...Wie kann ich die ganzzahl anzeigen lassen? ist das dann nicht ganzezahl:= ???? div ??? ICh hoffe du verstehst mein Problem
  Mit Zitat antworten Zitat
Benutzerbild von TonyR
TonyR

Registriert seit: 17. Jun 2006
Ort: Bautzen
503 Beiträge
 
FreePascal / Lazarus
 
#9

Re: Bruchrechnung und das kürzen...

  Alt 13. Feb 2007, 11:12
Zitat von Anigmos:
...ICh hoffe du verstehst mein Problem
Nein.
"Round" rundet Zahlen immer zu einer Ganzzahl, es gibt also eine Ganzzahl wieder. Und wenn ich das hier verwende:
Round(Ausgangsbruch.zahler div ggt(Ausgangsbruch.zahler,Ausgangsbruch.nenner)); wird eine Ganzahl zurückgeliefert... es kommt also zu keinem Problem.
Falls ich dich wirklich falsch verstanden habe, einfach nochmal genauer fragen
Es ist unmöglich, witzig zu sein ohne ein bisschen Bosheit. Die Bosheit eines guten Witzes ist der Widerhaken, der ihn haften lässt. - Georg Christoph Lichtenberg
  Mit Zitat antworten Zitat
Anigmos

Registriert seit: 6. Sep 2006
15 Beiträge
 
#10

Re: Bruchrechnung und das kürzen...

  Alt 13. Feb 2007, 11:17
Zitat von TonyR:
Zitat von Anigmos:
...ICh hoffe du verstehst mein Problem
Nein.
"Round" rundet Zahlen immer zu einer Ganzzahl, es gibt also eine Ganzzahl wieder. Und wenn ich das hier verwende:
Round(Ausgangsbruch.zahler div ggt(Ausgangsbruch.zahler,Ausgangsbruch.nenner)); wird eine Ganzahl zurückgeliefert... es kommt also zu keinem Problem.
Falls ich dich wirklich falsch verstanden habe, einfach nochmal genauer fragen
Round dürfen wir nicht benutzen...fürs runden gibt es ja dieses f oderso...
Ich hab mal ein Bild angehangen wie ich es meine ( mit den Ausgabe werten)
Miniaturansicht angehängter Grafiken
bruchrechnen_103.jpg  
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 00:28 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