kısa kodla ortalama aldırma...
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
kısa kodla ortalama aldırma...
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
YYYYYYYYYYYYYYYYYYYYYYYYYYYYY
YYYYYYYYYYYYYYYYYYYYYYYYYYYYY
Arkadaşlar yukarıdaki X Leri Edit Kabul edelim.Y Lere X Lerin ortalamalarını yazdırmak istiyorum.X Leri toplayıp 5 bölmek yerine daha kısa bir yöntemle bunu yapabilirmiyiz?Birde 5x70 adetinde edit mevcut.Kod uzaması olmasını istemiyorum...
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
YYYYYYYYYYYYYYYYYYYYYYYYYYYYY
YYYYYYYYYYYYYYYYYYYYYYYYYYYYY
Arkadaşlar yukarıdaki X Leri Edit Kabul edelim.Y Lere X Lerin ortalamalarını yazdırmak istiyorum.X Leri toplayıp 5 bölmek yerine daha kısa bir yöntemle bunu yapabilirmiyiz?Birde 5x70 adetinde edit mevcut.Kod uzaması olmasını istemiyorum...
bir fonksiyon yaz ve ona değer geç. şuna benzer bir fonksiyon olmalı :
OrtalamaAl(değer1, değer2, değer3, değer4:string) : string
....
burda ortalamayı alıp, string olarak döndürürsün. Kullanırken de :
Y1.Text := OrtalamaAl(x1.text, x2.text, ...) ;
gibi kullanırsın. Ama bence de Edit yerine daha uygun bir çözüm bulman iyi olur.
Kolay gelsin.
OrtalamaAl(değer1, değer2, değer3, değer4:string) : string
....
burda ortalamayı alıp, string olarak döndürürsün. Kullanırken de :
Y1.Text := OrtalamaAl(x1.text, x2.text, ...) ;
gibi kullanırsın. Ama bence de Edit yerine daha uygun bir çözüm bulman iyi olur.
Kolay gelsin.
procedure TForm1.Button3Click(Sender: TObject);
var
kats:array[1..5] of integer;
min,max,fark:integer;
begin
kats[1]:=strtointdef(edit1.Text,0);
kats[2]:=strtointdef(edit2.Text,0);
kats[3]:=strtointdef(edit3.Text,0);
kats[4]:=strtointdef(edit4.Text,0);
kats[5]:=strtointdef(edit5.Text,0);
max:=maxintvalue(kats);
min:=minintvalue(kats);
fark:=max-min;
edit134.Text:=floattostr(fark);
end;
end.
Arkadaşlar elimde bulunan 5 adet edita girilen değerlerin maximum değerlerinden minumum değerlerini çıkarttırmaktayım.Fakat nedense değerler Microsoft Excel dekinden farklı çıkıyor.Acaba nerede yanlışlık yapıyorum anlamadım.
Mesela Edit1’e -1,5,Edit2’e 10,Edit3’e 10,Edit4’e 15 ve Edit6’ya ise 20 girdiğimde sonucun 21,5 çıkması gerekirken sonuç 20 çıkıyor.Acaba sorun nerede?
Yardımlarınızı bekliyorum….
var
kats:array[1..5] of integer;
min,max,fark:integer;
begin
kats[1]:=strtointdef(edit1.Text,0);
kats[2]:=strtointdef(edit2.Text,0);
kats[3]:=strtointdef(edit3.Text,0);
kats[4]:=strtointdef(edit4.Text,0);
kats[5]:=strtointdef(edit5.Text,0);
max:=maxintvalue(kats);
min:=minintvalue(kats);
fark:=max-min;
edit134.Text:=floattostr(fark);
end;
end.
Arkadaşlar elimde bulunan 5 adet edita girilen değerlerin maximum değerlerinden minumum değerlerini çıkarttırmaktayım.Fakat nedense değerler Microsoft Excel dekinden farklı çıkıyor.Acaba nerede yanlışlık yapıyorum anlamadım.
Mesela Edit1’e -1,5,Edit2’e 10,Edit3’e 10,Edit4’e 15 ve Edit6’ya ise 20 girdiğimde sonucun 21,5 çıkması gerekirken sonuç 20 çıkıyor.Acaba sorun nerede?
Yardımlarınızı bekliyorum….
integer yerine Double kullan ondalıklı haneleri integer da gösteremezsin.
Hatta yazdığın kod da editin birine 1.5 yazdığında hata vermesi gerekir.
Hatta yazdığın kod da editin birine 1.5 yazdığında hata vermesi gerekir.
Oldeye Software
http://www.oldeye.com
http://www.oldeye.com
Merhaba,
function StrToIntDef(const S: string; Default: Integer): Integer; fonksiyonu string türündeki bir değeri integer yani tam sayıya çevirir. Eğer ilk parametrede girdiğiniz yazıyı tam sayıya çeviremiyorsa, sonuç olarak ikinci parametredeki tam sayıyı döndürecektir. Yani
StrToIntDef('-1.5', 0) sonuç olarak ikinci paremetreyi (bu örnekte 0) döndürecektir. Yanlış sonuç almanızın sebebi budur.
String türünü reel sayılara çevirmek için benzer olarak StrToFloat fonksiyonunu kullanınız.
function StrToFloat(const S: string): Extended;
Maksimum ve minimumları bulmak için kullandığınız maxintvalue fonksiyonu nedir bilemiyorum, D6da yok. O yüzden kendim bir prosedür yazdım.
Ertuğ Kaya
function StrToIntDef(const S: string; Default: Integer): Integer; fonksiyonu string türündeki bir değeri integer yani tam sayıya çevirir. Eğer ilk parametrede girdiğiniz yazıyı tam sayıya çeviremiyorsa, sonuç olarak ikinci parametredeki tam sayıyı döndürecektir. Yani
StrToIntDef('-1.5', 0) sonuç olarak ikinci paremetreyi (bu örnekte 0) döndürecektir. Yanlış sonuç almanızın sebebi budur.
String türünü reel sayılara çevirmek için benzer olarak StrToFloat fonksiyonunu kullanınız.
function StrToFloat(const S: string): Extended;
Maksimum ve minimumları bulmak için kullandığınız maxintvalue fonksiyonu nedir bilemiyorum, D6da yok. O yüzden kendim bir prosedür yazdım.
Kod: Tümünü seç
procedure MinMaxBul(const Kats: array of Double; var Min, Max: Double);
var
d: Integer;
begin
Min := Kats[0];
Max := Kats[0];
for d := 1 to 4 do
begin
if Kats[d] < Min then
Min := Kats[d];
if Kats[d] > Max then
Max := Kats[d];
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
Kats: array[1..5] of Double;
Min, Max, Fark: Integer;
begin
Kats[1] := StrToFloat(Edit1.Text);
...
MinMaxBul(kats, Min, Max);
Fark := Max - Min;
Edit134.Text := FloatToStr(Fark);
end;
Delphi'de ortalama, regresyon, standart sapma, kareler toplamı almanızı sağlayacak function'lar Math unitinde mevcut.
Mesela ortalama alacaksanız:
function Mean(const Data: array of Double): Extended;
function'unu kullanın örnek:
Ortalama:= Mean([11, 14.4, 133.14]);
ile bu değerlerin ortalamasını alabiliriz.
Mesela ortalama alacaksanız:
function Mean(const Data: array of Double): Extended;
function'unu kullanın örnek:
Ortalama:= Mean([11, 14.4, 133.14]);
ile bu değerlerin ortalamasını alabiliriz.