AGB  ·  Datenschutz  ·  Impressum  







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

Brüche kürzen- wieder einmal

Ein Thema von Spynx · begonnen am 18. Dez 2006 · letzter Beitrag vom 19. Dez 2006
Antwort Antwort
Seite 1 von 2  1 2      
Spynx

Registriert seit: 23. Okt 2006
15 Beiträge
 
#1

Brüche kürzen- wieder einmal

  Alt 18. Dez 2006, 18:58
Hallo, ich bin hier gerade am verzweifeln...
Ich habe einen P-Q Formel Rechner geschrieben, der auch automatisch die eingegebenen Brüche mitkürzen soll.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
z,n,x1,x2,a,p,px,p2,q,disk,p5,e: real;
begin
a:= strtofloat(edit1.text) / strtofloat(edit2.text);
px:= strtofloat(edit3.text) / strtofloat(edit4.text);
p:=px / a;
q:= (strtofloat(edit5.text) / strtofloat(edit6.text))/a;
p2:=p / 2;
disk:=sqr(p2) -q;

if disk<0 then begin
edit7.text:='';
edit8.text:='';
edit9.text:='Keine Lösung'
end
else if disk>0 then begin
edit9.text:='Zwei Lösungen';
x1:=-p/2+sqrt(disk);
x1:=round(x1 * 100) / 100 ;
x2:=p/2+sqrt(disk);
x2:=round(x2 * 100) / 100 ;
edit7.text:=''+floattostr(x1);
edit8.text:=''+floattostr(x2);
end
else if disk=0 then begin
edit9.text:='Eine Lösungen';
e:=-p/2;
x1:=e;
x1:=round(x1 * 100) / 100;
edit7.text:=''+floattostr (x1);
edit8.text:='';
end;
end;

var z,n:real;
begin
z:=strtoint(edit1.text); //hier ist der Fehler- nur wo?
n:=strtoint(edit2.text);
kuerze(z,n,z1,n1);
edit1.text:=inttostr(z1);
edit2.text:=inttostr(n1);
end;
end;
end;

Procedure kuerze(a,b:integer;var c,d:integer);
var teiler:integer;
begin
     teiler:=a;
     while (a mod teiler <> 0) or (b mod teiler <>0) do
           teiler:=teiler-1;
     c:=a div teiler;
     d:=b div teiler;
end;
ich schätze mal, das müsste soweit richtig sein, allerding markiert er mir die erste Zeile, nach dem "edit1." und sagt "undefinierter Bezeichner "edit1"". Ich schätze mal das ist ein ganz banaler Fehler, aber ich komme gerade echt net drauf -_-

Danke schonmal...
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Brüche kürzen- wieder einmal

  Alt 18. Dez 2006, 19:02
form1.edit1
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Spynx

Registriert seit: 23. Okt 2006
15 Beiträge
 
#3

Re: Brüche kürzen- wieder einmal

  Alt 18. Dez 2006, 19:20
Dankeschön

Delphi-Quellcode:
...

else if disk=0 then begin
edit9.text:='Eine Lösungen';
e:=-p/2;
x1:=e;
x1:=round(x1 * 100) / 100;
edit7.text:=''+floattostr (x1);
edit8.text:='';
end;
end;

var z,n:real;
begin
z:=strtofloat (form1.edit1.text);
n:=strtofloat(form1.edit2.text);
tform1.kuerze (z,n,z1,n1); // inkompatible Typen: Integer und real
edit1.text:=inttostr(z1);
edit2.text:=inttostr(n1);
end;
end;
end;

Procedure TForm1.kuerze(a,b:integer;var c,d:integer);
var teiler:real;
begin
     teiler:=a;
     while (a mod teiler <> 0) or (b mod teiler <>0) do
           teiler:=teiler-1;
     c:=a div teiler;
     d:=b div teiler;
selbes Programm, anderes Problem:Inkompatible Typen (siehe Oben)- was muss ich tuen???
  Mit Zitat antworten Zitat
Benutzerbild von Goldesel
Goldesel

Registriert seit: 22. Nov 2004
Ort: Lübeck
202 Beiträge
 
Delphi 2005 Architect
 
#4

Re: Brüche kürzen- wieder einmal

  Alt 18. Dez 2006, 19:42
Du hast die Variable z als Real deklariert, allerdings werden in der Procedure TForm1.Kuerze Integer-Werte verlangt. Ich denke, dass hier dein Fehler liegt.
  Mit Zitat antworten Zitat
Spynx

Registriert seit: 23. Okt 2006
15 Beiträge
 
#5

Re: Brüche kürzen- wieder einmal

  Alt 18. Dez 2006, 20:43
so siets momentan aus- aber immernoch das selbe Prob!?

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Label1: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Edit7: TEdit;
    Edit8: TEdit;
    Label5: TLabel;
    Label6: TLabel;
    Button1: TButton;
    Edit9: TEdit;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    CheckBox1: TCheckBox;
    procedure Button1Click(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    Procedure kuerze(a,b:integer;var c,d:integer);
    procedure Button2Click(Sender: TObject);
    private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
z,n,x1,x2,a,p,px,p2,q,disk,p5,e: real;
begin
a:= strtofloat(edit1.text) / strtofloat(edit2.text);
px:= strtofloat(edit3.text) / strtofloat(edit4.text);
p:=px / a;
q:= (strtofloat(edit5.text) / strtofloat(edit6.text))/a;
p2:=p / 2;
disk:=sqr(p2) -q;

if disk<0 then begin
edit7.text:='';
edit8.text:='';
edit9.text:='Keine Lösung'
end
else if disk>0 then begin
edit9.text:='Zwei Lösungen';
x1:=-p/2+sqrt(disk);
x1:=round(x1 * 100) / 100 ;
x2:=p/2+sqrt(disk);
x2:=round(x2 * 100) / 100 ;
edit7.text:=''+floattostr(x1);
edit8.text:=''+floattostr(x2);
end
else if disk=0 then begin
edit9.text:='Eine Lösungen';
e:=-p/2;
x1:=e;
x1:=round(x1 * 100) / 100;
edit7.text:=''+floattostr (x1);
edit8.text:='';
end;
end;

var z,n:real;
begin
z:=strtofloat (form1.edit1.text);
n:=strtofloat(form1.edit2.text);
tform1.kuerze (z,n,z1,n1);
edit1.text:=inttostr(z1);
edit2.text:=inttostr(n1);
end;
end;
end;

Procedure TForm1.kuerze(a,b:real;var c,d:real);
var teiler:real;
begin
     teiler:=a;
     while (a mod teiler <> 0) or (b mod teiler <>0) do
           teiler:=teiler-1;
     c:=a div teiler;
     d:=b div teiler;
end;
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Brüche kürzen- wieder einmal

  Alt 18. Dez 2006, 21:51
Du musst die Deklaration logischerweise auch ändern, nicht nur den Implementierungsteil deiner Methode.
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat
Spynx

Registriert seit: 23. Okt 2006
15 Beiträge
 
#7

Re: Brüche kürzen- wieder einmal

  Alt 18. Dez 2006, 23:17
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Label1: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Edit7: TEdit;
    Edit8: TEdit;
    Label5: TLabel;
    Label6: TLabel;
    Button1: TButton;
    Edit9: TEdit;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    CheckBox1: TCheckBox;
    procedure Button1Click(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    Procedure kuerze(a,b:real;var c,d:real);
    private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
z,n,x1,x2,a,p,px,p2,q,disk,p5,e: real;
begin
a:= strtofloat(edit1.text) / strtofloat(edit2.text);
px:= strtofloat(edit3.text) / strtofloat(edit4.text);
p:=px / a;
q:= (strtofloat(edit5.text) / strtofloat(edit6.text))/a;
p2:=p / 2;
disk:=sqr(p2) -q;

if disk<0 then begin
edit7.text:='';
edit8.text:='';
edit9.text:='Keine Lösung'
end
else if disk>0 then begin
edit9.text:='Zwei Lösungen';
x1:=-p/2+sqrt(disk);
x1:=round(x1 * 100) / 100 ;
x2:=p/2+sqrt(disk);
x2:=round(x2 * 100) / 100 ;
edit7.text:=''+floattostr(x1);
edit8.text:=''+floattostr(x2);
end
else if disk=0 then begin
edit9.text:='Eine Lösungen';
e:=-p/2;
x1:=e;
x1:=round(x1 * 100) / 100;
edit7.text:=''+floattostr (x1);
edit8.text:='';
end;
end;

var z,z1,n,n1:real;
begin
z:=strtofloat (form1.edit1.text);
n:=strtofloat(form1.edit2.text);
tform1.kuerze (z,n,z1,n1); //[Fehler] Unit1.pas(88): Diese Form des Methodenaufrufs ist nur für Klassenmethoden erlaubt
edit1.text:=inttostr(z1);
edit2.text:=inttostr(n1);
end;
end;
end;

Procedure TForm1.kuerze(a,b:real;var c,d:real);
var teiler:real;
begin
     teiler:=a;
     while (a mod teiler <> 0) or (b mod teiler <>0) do
           teiler:=teiler-1;
     c:=a div teiler;
     d:=b div teiler;}
end;
THX!

nu hab ich aber wieder einen Fehler -_-
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Brüche kürzen- wieder einmal

  Alt 19. Dez 2006, 00:19
Zitat von Spynx:
nu hab ich aber wieder einen Fehler -_-
Und?

PS: Du solltest deinen Code mal besser, lesvbarer formatieren.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#9

Re: Brüche kürzen- wieder einmal

  Alt 19. Dez 2006, 01:14
... und danach einfach das t entfernen.

form1.kuerze(z, n, z1, n1); Ich wollt' jetzt die begins und ends net nachzählen, aber wenn das innerhalb von TForm1 aufgerufen wird, dann gings auch so kuerze(z, n, z1, n1);
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat
Spynx

Registriert seit: 23. Okt 2006
15 Beiträge
 
#10

Re: Brüche kürzen- wieder einmal

  Alt 19. Dez 2006, 17:12
habs mal passen formatiert und editiert...
aber es funktioniert immernoch nicht...

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Label1: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Edit7: TEdit;
    Edit8: TEdit;
    Label5: TLabel;
    Label6: TLabel;
    Button1: TButton;
    Edit9: TEdit;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    CheckBox1: TCheckBox;
    procedure Button1Click(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    Procedure kuerze(a,b:real;var c,d:real);
    private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
z,n,x1,x2,a,p,px,p2,q,disk,p5,e,z1,n1:real;
begin
     a:= strtofloat(edit1.text) / strtofloat(edit2.text);
     px:= strtofloat(edit3.text) / strtofloat(edit4.text);
     p:=px / a;
     q:= (strtofloat(edit5.text) / strtofloat(edit6.text))/a;
     p2:=p / 2;
     disk:=sqr(p2) -q;

                   if disk<0 then begin
                   edit7.text:='';
                   edit8.text:='';
                   edit9.text:='Keine Lösung'
                   end
                      else if disk>0 then begin
                      edit9.text:='Zwei Lösungen';
                      x1:=-p/2+sqrt(disk);
                      x1:=round(x1 * 100) / 100 ;
                      x2:=p/2+sqrt(disk);
                      x2:=round(x2 * 100) / 100 ;
                      edit7.text:=''+floattostr(x1);
                      edit8.text:=''+floattostr(x2);
                      end
   else if disk=0 then begin
   edit9.text:='Eine Lösungen';
   e:=-p/2;
   x1:=e;
   x1:=round(x1 * 100) / 100;
   edit7.text:=''+floattostr (x1);
   edit8.text:='';
   end;




z:=strtofloat (form1.edit1.text);
n:=strtofloat(form1.edit2.text);
form1.kuerze (z,n,z1,n1);
form1.edit1.text:=floattostr(z1);
form1.edit2.text:=floattostr(n1);
end;


Procedure TForm1.kuerze(a,b:real;var c,d:real);
var teiler:real;
begin
     teiler:=a;
     while (a mod teiler <>{!!!Operator ist auf diesen Operandentyp nicht anwendbar!!!} 0) or (b mod teiler <>0) do
           teiler:=teiler-1;
     c:=a div teiler;
     d:=b div teiler;}
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
  if checkbox1.checked=false then begin
  edit2.visible:=false;
  edit4.visible:=false;
  edit6.visible:=false;
  edit2.text:='1';
  edit4.text:='1';
  edit6.text:='1';
  label7.visible:=false;
  label8.visible:=false;
  label9.visible:=false;
  edit1.top:=77;
  edit3.top:=77;
  edit5.top:=77;
  end
  else begin
  edit2.visible:=true;
  edit4.visible:=true;
  edit6.visible:=true;
  label7.visible:=true;
  label8.visible:=true;
  label9.visible:=true;
  edit1.top:=64;
  edit3.top:=64;
  edit5.top:=64;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  edit2.visible:=false;
  edit4.visible:=false;
  edit6.visible:=false;
  edit2.text:='1';
  edit4.text:='1';
  edit6.text:='1';
  label7.visible:=false;
  label8.visible:=false;
  label9.visible:=false;
  edit1.top:=77;
  edit3.top:=77;
  edit5.top:=77;
end;

end.
Wenn sich evtl. jemand die Zeit nehmen würde, und sich das mal anschaut, wäre ich sehr dankbar
Angehängte Dateien
Dateityp: zip inet_468.zip (5,3 KB, 3x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 17:35 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