Delphiben hogyan tudok szórást számolni? Bővebben
5 értékem van ezek szám[1],szám[2],szám[3],szám[4],szám[5] átlaguk is megvan és egy Label-be kellene kiiratni a szórást de folyamatosan valami problémája van hogy nem valós szám, nem jó formátum stb..
Matematikailag a szórás kiszámításának lépései:
1. Kiszámítjuk az adatok átlagát.
2. Kiszámítjuk az adatok eltérését az átlagtól
(adat - átlag)
3. Vesszük ezeknek az eltéréseknek a négyzetét.
4. Kiszámítjuk ezeknek az "eltérés négyzeteknek" az átlagát.
5. Végül ebből négyzetgyököt vonunk.
osszeg:=szam[1]+szam[2]+szam[3]+szam[4]+szam[5];
label1.caption:='',+FloatToStr(osszeg/5); {átlagot számolja}
label2.caption:='',FloatToStr(szam[1]-StrToInt(Label1.caption));
ezzel számolnál első lépésben az átlagtól való eltéréseket(csak az átlagot meg is csinálja rendesen), le is fut a program de a buttonclick után ez a hibaüzenet van
valami ötlet?:D
Project Project1.exe raised exception class EConverterError with message "1,8" is not a valid integer value'.
Process stopped.
Use Step or Run to contiune.
Hát mindjárt oda szúrom a rozsdást ahol legjobban fáj :(
StrToFloat kicsi lelkem, nem StrToInt, picit gondolkozz már.
szép és jó csak az "int" nem fogja kiírni a számokat tizedesjeggyel
átlagot is csak a float tipus segítségével írta ki mert ott is tizedesvessző van
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Math;
type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
atlag : real;
osszeg : real;
szam : array [1..5] of real;
elt : array [1..5] of real;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var i : byte;
begin
osszeg := 0;
szam[1] := 1.1;
szam[2] := 1.2;
szam[3] := 1.3;
szam[4] := 1.4;
szam[5] := 1.5;
for i := 1 to 5 do osszeg := osszeg + szam[i];
atlag := osszeg / 5;
for i := 1 to 5 do elt[i] := Power(atlag - szam[i],2);
osszeg := 0;
for i := 1 to 5 do osszeg := osszeg + elt[i];
Label1.Caption := FloatToStr(Sqrt(osszeg));
end;
end.
Tegyél fel egy Button1-es és egy Label1-et a formra és kész.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!