kısa kodla ortalama aldırma...

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
uince
Üye
Mesajlar: 38
Kayıt: 01 Mar 2004 04:57

kısa kodla ortalama aldırma...

Mesaj gönderen uince »

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...
ng
Üye
Mesajlar: 192
Kayıt: 01 Mar 2004 11:49
Konum: Bursa
İletişim:

Mesaj gönderen ng »

ne yapmak istediğini tam anlamadım ama edit yerine 5x70 string grid kullanırsan işin daha kolay olur sanırım
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

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.
uince
Üye
Mesajlar: 38
Kayıt: 01 Mar 2004 04:57

Mesaj gönderen uince »

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….
Kullanıcı avatarı
feinpus
Üye
Mesajlar: 214
Kayıt: 17 Kas 2003 04:37
Konum: İstanbul
İletişim:

Mesaj gönderen feinpus »

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.
Oldeye Software
http://www.oldeye.com
uince
Üye
Mesajlar: 38
Kayıt: 01 Mar 2004 04:57

Mesaj gönderen uince »

double ile tanımladığımızda nasıl çeviriyoruz?

Kullandım olmadı...
uince
Üye
Mesajlar: 38
Kayıt: 01 Mar 2004 04:57

Mesaj gönderen uince »

sorun halen devam etmekte....
ertug
Üye
Mesajlar: 82
Kayıt: 10 Ara 2004 05:41

Mesaj gönderen ertug »

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.

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;
Ertuğ Kaya
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

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.
Cevapla