![]() |
|
dizideki en buyuk sayı ve id si - Baskı Önizleme +- Delphi Can (https://www.delphican.com) +-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3) +--- Forum: Genel Programlama (https://www.delphican.com/forumdisplay.php?fid=6) +--- Konu Başlığı: dizideki en buyuk sayı ve id si (/showthread.php?tid=6351) |
dizideki en buyuk sayı ve id si - sadikacar60 - 26-10-2021 arkadaşlar dizi içindeki en buyuk değeri bulma üzerine netde araştırma yaptım. sonuc:=MaxIntValue(frmWinTp);//en büyük degeri bul bu kodla en buyuk değeri buluyorum ama bana en buyuk değerin id side lazım for döngüsü kullanmadan bulmak mümkünmü? saygılarımla dizideki en buyuk sayı ve id si - mrmarman - 26-10-2021 Size bir iyi bir kötü haberim var... Kötü haber; Math unitinde MaxIntValue fonksiyonunu incelerseniz zaten for döngüsü ile çalıştığı aşağıdaki kodu görürsünüz. function MaxIntValue(const Data: array of Integer): Integer; var I: Integer; begin Result := Data[Low(Data)]; for I := Low(Data) + 1 to High(Data) do if Result < Data[I] then Result := Data[I]; end; İyi haber ise Math unitini boş verin, kendiniz bu fonksiyonu copy/paste yapın ve ekstra bir tane daha değişken koyup index'i de tutabilirsiniz. Örnek : Type tSonuc = record Maxvalue, Index : Integer; end; function MaxIntValueAndIndex(const Data: array of Integer): tSonuc; var I: Integer; begin Result.Maxvalue := Data[Low(Data)]; Result.Index := Low(Data); for I := Low(Data) + 1 to High(Data) do if Result.Maxvalue < Data[I] then begin Result.Maxvalue := Data[I]; Result.Index := I; end; end; Kullanımı
procedure TForm1.Button1Click(Sender: TObject);
const
LDizi : Array[0..4] of integer = ( 5, 7, 12, 1, 3 );
var
LSonuc : tSonuc;
begin
LSonuc := MaxIntValueAndIndex( LDizi );
ShowmessageFmt('Dizinin Max değeri :%d ve %d index nosunda yer alıyor', [ LSonuc.Maxvalue, LSonuc.Index ]);
end;
Cvp: dizideki en buyuk sayı ve id si - sadikacar60 - 27-10-2021 hocam bu kadar detaylı cevap gelince utandım valla çok sağolun hocam. ben aşagıdaki şekilde halletmiştim. sizin örneklerinizide kullanacağım saygılarımla procedure TfrmWin.FormShow(Sender: TObject); var i,sonuc:integer; id:integer; begin //kazanann sıralayı belirleyelim sonuc:=MaxIntValue(frmWinTp);//en büyük degeri bul for i:=1 to 10 do begin if frmWinTp[i]=sonuc then id:=i; end; lblBir.Caption:=frmWinAd[id]; lblBirPuan.Caption:=IntToStr(sonuc); end; |