1 Arry Rechnen ,
Autor: KEv
(G)
(IP bekannt)
Datum: 19. Mai. 2010 22:57
Hallo ,
also ich habe ein en Datensatz nur aus zahlen ,total willkürliche Zahlen und soll diesen datensatz nun mit einer
prozedur einlesen und auch einem arry ablegen , das habe ich auch gemacht , nun soll ich aus diesen zahlen das maximum bestimmen und das arithmetische Mittel und die standdardabweichung ...aber wie rechne ich denn damit ? ich habe schon alles mögliche versucht über schleifen und so weiter ,aber ich krieg es einafch nicht gebacken , vllt kann mir hier ja jemand helfen ...
Mfg
2 Re: Arry Rechnen ,
Autor: BP92
(R)
(IP bekannt)
Datum: 20. Mai. 2010 00:12
Hallo,
wenn du einen Datensatz in ein Array ablegen willst, dann ist es hilfreich zu wissen, wie viele Zahlen das insgesamt sind. Je nach dem muss dann die Groesse des Arrays definiert werden. Ein Array wird ja folgendermassen definiert:
CONST
MAX=100;
VAR
arZahlen: ARRAY[1..MAX] OF REAL;
rZahl: REAL;
iIndex: INTEGER;
Wenn du die Zahlen alle z.B. nacheinander eintippst, dann kann das so aussehen:
BEGIN
...
iIndex:=0;
WHILE (iIndex<MAX) DO BEGIN
iIndex:=iIndex+1;
READLN(rZahl); // Zahl einlesen
arZahlen[iIndex]:=rZahl; // Array belegen
END; (* WHILE *)
...
END.
Um jetzt den Mittelwert aus den Werten des Arrays zu bestimmen, kannst du folgende Funktion definieren:
FUNCTION Mittelwert(arListe: ARRAY OF REAL): REAL;
VAR
i, anzahl: INTEGER;
summe: REAL;
BEGIN
anzahl:=HIGH(arListe);
summe:=0;
FOR i:=1 TO anzahl DO summe:=summe+arListe[i];
summe:=summe/anzahl;
Mittelwert:=summe;
END; (* Func Mittelwert() *)
Das ist also der Mittelwert (auch Erwartungswert genannt). Mit HIGH() kannst du den maximalen Index des ARRAYs ermitteln, wenn du davon ausgehst, dass das Array komplett mit Werten gefuellt ist.
Die Standardabweichung kannst du folgendermassen errechnen:
FUNCTION StdDev(arListe: ARRAY OF REAL): REAL;
VAR
n, i: INTEGER;
mittelw, qdiff: REAL;
BEGIN
n:=HIGH(arListe);
mittelw:=Mittelwert(arListe);
qdiff:=0;
// Summe der Differenz von Einzelwert-Mittelwert zum Quadrat
FOR i:=1 TO n DO qdiff:=qdiff+SQR(arListe[i]-mittelw);
// Standardabweichung ist Wurzel aus Summe qdiff mal (1/(n-1))
StdDev:=SQRT(qdiff/(n-1));
END; (* Func StdDev() *)
Das Bestimmen des Maximums ist dagegen schon beinahe einfach
FUNCTION Max(arListe: ARRAY OF REAL): REAL;
VAR
i: INTEGER;
maximum: REAL;
BEGIN
maximum:=0;
FOR i:=1 TO HIGH(arListe) DO
IF (arListe[i]>maximum) THEN maximum:=arListe[i];
Max:=maximum;
END; (* Func Max() *)
Das sollte funktionieren...
Sonst koennte das hier noch hilfreich sein:
[de.wikipedia.org]
--
PASCAL Programmierer aus Leidenschaft
Turbo Pascal Beispiele fuer Anfaenger: [www.webplain.de]
Momentane Projekte:
-----------------------
Konsolen-Adventure Game mit FreePascal (im Denkpause-Forum) [www.webplain.de]
Funktionsplotter und -rechner; Vorabversion gibt's hier: [www.webplain.de]
Objektorientierte Textmodus-GUI; Release-Termin: groesstenteils fertig
Hinweise
- Das hier ist kein Hausaufgabenservice. Konkrete Fragen werden natürlich gerne beantwortet.
- Probieren Sie doch zuerst die Suchfunktion aus und werfen Sie einen Blick in die FAQ.
- Ein aussagekräftiger Betreff ist wichtig, unter »HILFE!!!« kann man sich nichts vorstellen. Bitte nicht nur Großbuchstaben.
- Anhänge zu Ihrem Projekt (max. 250 KB) können helfen, das Problem schnell zu lösen.
- HTML-Tags sind aus Sicherheitsgründen nicht möglich.
- Quelltext können Sie mit
[code]Quelltext[/code]formatieren. - Alle weiteren möglichen Forum-Tags können Sie hier nachlesen.
Nach oben
© 2000-2010 Clemens Weiß | Webplain.de
Link zu dieser Seite | Letzte Änderung: 26. Okt. 2008
