![]() |
kuerzen von 3 werten
also, ich hab drei werte zu einem record zusammengefasst und das in einen array gepackt...nun will ich den ganzen kram kürzen, nur irgendwas stimmt da nicht...
die werte können minimal 1 sein und höchstens 20 es soll nur gekürzt werden wenns bei allen geht also im Button2Click wird jedes element erst gekürzt, und dann in die listbox geschrieben nur in der listbox steht dann 100mal "0:0:0" gesamt is die anzahl der elemente results is der array
Delphi-Quellcode:
also ich find das eigentlich total logisch, aber irgendwie haut das nicht hin.... :gruebel:
procedure TForm1.Button2Click(Sender: TObject);
var i:integer; procedure kuerzen(i:integer); var j:integer; begin for j:=20 downto 2 do if (results[i].metall mod j=0) and (results[i].kristall mod j=0) and (results[i].tritium mod j=0) then begin results[i].metall:=results[i].metall div j; results[i].kristall:=results[i].kristall div j; results[i].tritium:=results[i].tritium div j; end; end; begin ListBox1.Clear; for i:=1 to gesamt do begin kuerzen(i); ListBox1.Items.Add(inttostr(results[i].metall)+':' +inttostr(results[i].kristall)+':' +inttostr(results[i].tritium)); end; end; auch wenn ichs in kuerzen nur von 2 bis 2 laufen lasse kommt der fehler... nochma edit: folgender code funzt:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var t1,t2,i:integer; begin t1:=strtoint(Edit1.Text); t2:=strtoint(Edit2.Text); for i:=20 downto 2 do if (t1 mod i=0) and (t2 mod i=0) then begin t1:=t1 div i; t2:=t2 div i; end; showmessage(inttostr(t1)+':'+inttostr(t2)); end; |
Re: kuerzen von 3 werten
Wie ist denn das Array results definiert?
|
Re: kuerzen von 3 werten
Hast du mal "kuerzen" weggelassen und nachgeschaut, was dann in der ListBox steht?
Delphi-Quellcode:
begin
//kuerzen(i); ListBox1.Items.Add(inttostr(results[i].metall)+':' |
Re: kuerzen von 3 werten
also, das array is wie folgt definiert:
Delphi-Quellcode:
und zum zweiten..ähhhh, da kommt auch 0...das KANN nicht sein
type
TKurs = record metall, kristall, tritium:integer; end; var results: array[1..155] of TKurs; also hier nochma der gesamte code:
Delphi-Quellcode:
so, ich hab ma ausprobiert ob in results[i].xxx überhaupt was drinsteht....
var
Form1: TForm1; results: array[1..155] of TKurs; gesamt:integer; implementation {$R *.dfm} //"tripel" suchen procedure TForm1.Button1Click(Sender: TObject); var metall,kristall,tritium,i:integer; begin ListBox1.Clear; gesamt:=0; for metall:=1 to 20 do for kristall:=1 to 20 do for tritium:=1 to 20 do begin //wenn es passt dann eintragen if abs(metall/kristall-2.2)<0.5 then if abs(metall/tritium-2.1)<0.5 then if abs(kristall/tritium-1)<1 then begin //in listbox ListBox1.Items.Add(inttostr(metall)+':'+inttostr(kristall)+':'+inttostr(tritium)); inc(gesamt); label1.Caption:=inttostr(gesamt); //und in array results[i].metall:=metall; results[i].kristall:=kristall; results[i].tritium:=tritium; end; end; end; //kuerzen procedure TForm1.Button2Click(Sender: TObject); var i:integer; procedure kuerzen(i:integer); var j:integer; begin for j:=20 downto 2 do if (results[i].metall mod j=0) and (results[i].kristall mod j=0) and (results[i].tritium mod j=0) then begin results[i].metall:=results[i].metall div j; results[i].kristall:=results[i].kristall div j; results[i].tritium:=results[i].tritium div j; end; end; begin ListBox1.Clear; for i:=1 to gesamt do begin kuerzen(i); ListBox1.Items.Add(inttostr(results[i].metall)+':' +inttostr(results[i].kristall)+':' +inttostr(results[i].tritium)); end; end; end. bei folgendem code in Button1Click kommt das richtige ergebnis:
Delphi-Quellcode:
results[i].metall:=metall;
results[i].kristall:=kristall; results[i].tritium:=tritium; ListBox1.Items.Add(inttostr(results[i].metall)+':'+inttostr(results[i].kristall)+':'+inttostr(results[i].tritium)); |
Re: kuerzen von 3 werten
:coder2:
Ich glaube in button1Click solltest du auch mal i erhöhen. Sonst schreibt er die Werte immer auf den ersten Eintrag und das möchtest du doch nicht, oder? Zum dem solltest du i überhaupt mit einem Wert initsialisiern. Am besten 1. P.S: Alles auf Button1Click bezogen! |
Re: kuerzen von 3 werten
hi,
results wird nicht initialisiert! ;) Gruß Stephan :dance: |
Re: kuerzen von 3 werten
:wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall:
ich musste in Button1Click i durch gesamt ersetzen ARGHHHHH aba jetzt funzt es... danke für den hinweis.. :thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:36 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