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.
(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
(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.
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 dekinotları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 dekinotları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 ?