Delphi Can

Orjinalini görmek için tıklayınız: Delphi kod örneği
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Sayfalar: 1 2
Merhabalar, öncelikle bu uygulamayı length ve copy olarak yapmaya çalışıyorum. 60 la 80 arasındaki puanları L2 ye aktarabiliyorum ve yapabiliyorum. Ancak aynı zamanda L2 ye "ortalamasını" yapmaya çalışırken bir türlü yapamadım ve yardım istemekteyim. Bu örneğin kodlarını yapabilirseniz çok müteşekkir olurum efendim. Herkese iyi çalışmalar ve iyi günler diliyorum.
Aktarım yaptığınız kod kısmını paylaşırmısınız. Ortalama hesabını yapmak için gerekli olan şeylerin %90ı zaten orada olması lazım.
(10-01-2023, Saat: 09:20)frmman Adlı Kullanıcıdan Alıntı: [ -> ]Aktarım yaptığınız kod kısmını paylaşırmısınız. Ortalama hesabını yapmak için gerekli olan şeylerin %90ı zaten orada olması lazım.

60 la 80 arasını değilde 50 den düşüğü falan aktarabildim birde onun üzerinde ortalamayı istiyor eklenenlerin yapamadıklarım onlar sadece

[attachment=2258]
Eklenen resimden birşey anlaşılmıyor, çözünürlüğü çok düşük.
Mümkünse

Begin
// kodlarınız....
// bu şekilde ekleyin
End;
(10-01-2023, Saat: 16:39)frmman Adlı Kullanıcıdan Alıntı: [ -> ]Eklenen resimden birşey anlaşılmıyor, çözünürlüğü çok düşük.
Mümkünse

Begin
// kodlarınız....
// bu şekilde ekleyin
End;

var
x,I,uz:integer;
s:string;
toplam,ortalama:real;
begin

for I := 0 to L1.Items.Count-1 do

  begin

  x:=pos('=',L1.Items[I]);
  uz:=length(L1.Items[I]);
  s:=copy(L1.Items[I],x+1,uz-x);

  if (strtoint(s)>=60) and (strtoint(s)<=80) then
    begin
    L2.Items.Add(L1.Items[I]);
    end;



    end;


end;

end.

bu şekilde 60 la 80 arasındaki notları geçiriyorum eksik olan şey ortalaması. onu yapabilirsen çok güzel olur.
Şu şekilde yapabilirsiniz.

Kodlar test edilmedi, syntax hataları olabilir.

var
x,I,uz:integer;
s:string;
toplam,ortalama:real;
adet:integer;
begin
 
adet = 0;
toplam := 0;

for I := 0 to L1.Items.Count-1 do
   begin
 
  x:=pos('=',L1.Items[I]);
  uz:=length(L1.Items[I]);
  s:=copy(L1.Items[I],x+1,uz-x);
 
  if (strtoint(s)>=60) and (strtoint(s)<=80) then
   begin
   inc(adet);
     toplam := toplam + strtoint(s);
   L2.Items.Add(L1.Items[I]);
   end;

 end;

if adet > 0 then
begin
  ortalama := toplam / adet;
  L2.Items.Add('Ortalama:'+floattostr(ortalama));
end
else
begin
  L2.Items.Add('Ortalama Hesaplanamadı');
end;
 
end;
 
end.
(10-01-2023, Saat: 20:56)frmman Adlı Kullanıcıdan Alıntı: [ -> ]Şu şekilde yapabilirsiniz.

Kodlar test edilmedi, syntax hataları olabilir.

var
x,I,uz:integer;
s:string;
toplam,ortalama:real;
adet:integer;
begin
 
adet = 0;
toplam := 0;

for I := 0 to L1.Items.Count-1 do
   begin
 
  x:=pos('=',L1.Items[I]);
  uz:=length(L1.Items[I]);
  s:=copy(L1.Items[I],x+1,uz-x);
 
  if (strtoint(s)>=60) and (strtoint(s)<=80) then
   begin
   inc(adet);
     toplam := toplam + strtoint(s);
   L2.Items.Add(L1.Items[I]);
   end;

 end;

if adet > 0 then
begin
  ortalama := toplam / adet;
  L2.Items.Add('Ortalama:'+floattostr(ortalama));
end
else
begin
  L2.Items.Add('Ortalama Hesaplanamadı');
end;
 
end;
 
end.
var
I,x,uz:integer;
s:string;
toplam,ortalama:Real;
begin
for I := 0 to L1.Items.Count-1 do
  begin
  x:=pos('=',L1.Items[I]);
  uz:=length(L1.Items[I]);
  s:=copy(L1.Items[I],x+1,uz-x);
  if (strtoint(s)>=60) and (strtoint(s)<=80) then
    begin
    toplam:=toplam+strtoint(s);
    L2.Items.Add(L1.Items[I]);
    end;
  end;
  for I := 0 to L2.Items.Count-1 do

      ortalama:=toplam/(L2.Items.Count);
      L2.Items.Add('Ortalamanız:'+floattostr(ortalama));

end;

end.

bu şekilde sonuca ulaştım ve ortalamasını alıp ekledi senin yazdığın koda bakıp uyarladım ve bunu yazıp çalıştırdım teşekkürler üşenmeden yanıt verdiğin için.
Aşağıda yazdığın kodda işaretlediğim kısım gereksiz.

Birde şu şekilde dene bakalım ne olacak: L1 deki notların hepsine 50 den küçük değerler verip tekrar yazdığın kodu çalıştır.


var
I,x,uz:integer;
s:string;
toplam,ortalama:Real;
begin
for I := 0 to L1.Items.Count-1 do
  begin
  x:=pos('=',L1.Items[I]);
  uz:=length(L1.Items[I]);
  s:=copy(L1.Items[I],x+1,uz-x);
  if (strtoint(s)>=60) and (strtoint(s)<=80) then
   begin
   toplam:=toplam+strtoint(s);
   L2.Items.Add(L1.Items[I]);
   end;
  end;
  for I := 0 to L2.Items.Count-1 do // <<--- BU KISIM GEREKSİZ
 
     ortalama:=toplam/(L2.Items.Count);
     L2.Items.Add('Ortalamanız:'+floattostr(ortalama));
 
end;
 
end.
(11-01-2023, Saat: 10:37)frmman Adlı Kullanıcıdan Alıntı: [ -> ]Aşağıda yazdığın kodda işaretlediğim kısım gereksiz.

Birde şu şekilde dene bakalım ne olacak: L1 deki notların hepsine 50 den küçük değerler verip tekrar yazdığın kodu çalıştır.


var
I,x,uz:integer;
s:string;
toplam,ortalama:Real;
begin
for I := 0 to L1.Items.Count-1 do
  begin
  x:=pos('=',L1.Items[I]);
  uz:=length(L1.Items[I]);
  s:=copy(L1.Items[I],x+1,uz-x);
  if (strtoint(s)>=60) and (strtoint(s)<=80) then
   begin
   toplam:=toplam+strtoint(s);
   L2.Items.Add(L1.Items[I]);
   end;
  end;
  for I := 0 to L2.Items.Count-1 do // <<--- BU KISIM GEREKSİZ
 
     ortalama:=toplam/(L2.Items.Count);
     L2.Items.Add('Ortalamanız:'+floattostr(ortalama));
 
end;
 
end.
L1 in ortalamasını aldı hatalı çıktı evet senin ilk yazdığını yazınca oldu ancak ben "inc" kodunu görmediğim ve bilmediğim için biraz şüpheli bakıp denememiştim deneyince oldu bana "inc" i anlatabilir misin ?
adet := adet + 1 ===> inc(adet)
adet := adet + 3 ===> inc(adet, 3)

anlamına geliyor.
Sayfalar: 1 2