Thema: Delphi kuerzen von 3 werten

Einzelnen Beitrag anzeigen

Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#4

Re: kuerzen von 3 werten

  Alt 29. Okt 2004, 12:46
also, das array is wie folgt definiert:

Delphi-Quellcode:
type
  TKurs = record
            metall, kristall, tritium:integer;
          end;
var
  results: array[1..155] of TKurs;
und zum zweiten..ähhhh, da kommt auch 0...das KANN nicht sein


also hier nochma der gesamte code:

Delphi-Quellcode:
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.
so, ich hab ma ausprobiert ob in results[i].xxx überhaupt was drinsteht....
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));
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat