Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Array Problem, ein kleines Programm
meta - So 21.01.07 18:52
Titel: Array Problem, ein kleines Programm
Würden Sie mir bitte mit dem folgenden Programm helfen?
schreiben sie ein programm, das 10 Realwerte von der Tastatur übernimmt und die Anzahl aller Zahlen gleich Null und die Anzahl aller Zahlen im Bereich 3<=x<=5 feststellt und den Mittelwert ermittelt.
Ich habe bis jetzt folgendes gemacht:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41:
| procedure TForm1.Button1Click(Sender: TObject); const n=9; type feld=array [0..n] of integer; var A:Feld; var i,anzahl0:integer; var anzahl,m,summe: real; begin
writeln('geben sie die Werte ein'); for i:=0 to n do readln (A[i]); writeln('hier sind die werte'); for i:=0 to n do write(A[i]);
anzahl:=0; summe:=0;
for i:=0 to n do if A[i]<=5 then if A[i]>=3 then anzahl:=anzahl+1; summe:=summe+i; m:=summe/anzahl; writeln('anzahl',anzahl); writeln('summe',summe); writeln('Mittelwert',m);
anzahl0:=0; for i:=0 to n do if A[i]=0 then anzahl0:=anzahl0 +1; writeln('anzahl von 0 ist ', anzahl0);
end; |
Dies funktioniert, aber nicht ganz richtig. die Zahlen werden nicht richtig summiert.es kommt immer "10" raus
Warum kann ich bei der If-Anweisung folgendes nicht schreiben? : " if A[i]<=5 and A[i]>=3 then...."
dabei bekomme ich die Fehlermeldung: "Unkompatible Typen.."
wie kann ich dieses Problem lösen!??
Vielem Dank im Voraus!
Moderiert von
Christian S.: Delphi-Tags hinzugefügtModeriert von
Christian S.: Titel angepasst
Calculon - So 21.01.07 19:20
Die Antwort bezieht sich jetzt auf folgende Frage
| Zitat: |
| Warum kann ich bei der If-Anweisung folgendes nicht schreiben? : " if A[i]<=5 and A[i]>=3 then...." |
Du darfst in Delphi die Klammern nicht vergessen:
Delphi-Quelltext
1:
| if (A[i]<=5) and (A[i]>=3) then... |
Gruß
--
stifflersmom - So 21.01.07 19:28
Na, Dein programm wirst Du schon selber fertig stellen müssen.
Allerdings als kleiner Tip:
Die Aufgabenstellung war Realwerte zu erfassen und damit geht dein Array von Integerwerten aun der Aufgabenstellung vorbei, denn als Integer-wert könnte es für Deine Aufgabenstellung Werte zu ermitteln die zwischen 3 und 5 liegen, nur die 4 geben und das ist definitiv nicht gemeint.
Zu deiner Frage nach der logischen Abfrage:
if A[i]<=5 and A[i]>=3 then
Das müsstest Du schon in Klammern verschachteln:
if (A[i]<=5) AND (A[i]>=3) then ...
Und hier willst Du doch den ganzen Block ausführen lassen, oder:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| for i:=0 to n do if A[i]<=5 then if A[i]>=3 then anzahl:=anzahl+1; summe:=summe+i; m:=summe/anzahl; |
Dafür fehlt Dir allerdings noch der notwendige
Teil
Moin
Delete - So 21.01.07 21:47
tja, stiffersmoon hat schon die richtige idee.
was ich mir an deiner stelle mal angewöhnen würde, ist deinen quellcode einzurücken, dann hättest du das ganze gleich auf anhieb gesehen...
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45:
| PROCEDURE TForm1.Button1Click(Sender: TObject); CONST n = 9; TYPE feld = ARRAY [0..n] OF INTEGER; VAR A: Feld; VAR i, anzahl0: INTEGER; VAR anzahl, m, summe: REAL; BEGIN
writeln('geben sie die Werte ein'); FOR i := 0 TO n DO readln(A[i]); writeln('hier sind die werte'); FOR i := 0 TO n DO Write(A[i]);
anzahl := 0; summe := 0;
FOR i := 0 TO n DO IF A[i] <= 5 THEN IF A[i] >= 3 THEN anzahl := anzahl + 1; summe := summe + i; m := summe / anzahl; writeln('anzahl', anzahl); writeln('summe', summe); writeln('Mittelwert', m);
anzahl0 := 0; FOR i := 0 TO n DO IF A[i] = 0 THEN anzahl0 := anzahl0 + 1; writeln('anzahl von 0 ist ', anzahl0);
END; |
meta - Mo 22.01.07 00:04
Vielen Dank,
habe jetzt meine Fehler verstanden!
mfg,
meta
stifflersmom - Mo 22.01.07 15:48
Grenzgaenger hat folgendes geschrieben: |
tja, stiffersmoon hat schon die richtige idee.
|
Tss, tsss so hört sich mein Nick ja an wie 'n billiger Manga-comic
Moin
Delete - Mo 22.01.07 16:12
Schreibst du eigentlich eine Konsolen- oder eine GUI-Anwendung? Ich frage nur, weil du dort eine Methode procedure TForm1.Button1Click(Sender: TObject); hast, aber auch Writeln und Readln verwendest.
Danny W. - Mo 22.01.07 16:23
| Zitat: |
| Schreibst du eigentlich eine Konsolen- oder eine GUI-Anwendung? Ich frage nur, weil du dort eine Methode procedure TForm1.Button1Click(Sender: TObject); hast, aber auch Wrtiteln und Readln verwendest. |
Genau das selbe habe ich mich auch gerade gefragt..
und nocheinmal zur Optik. Ein Var pro Procedure reicht eigentlich vollkommen
Delphi-Quelltext
1: 2: 3:
| var 1 : integer; 2 : string; 3 : real; |
oder
Delphi-Quelltext
1: 2: 3: 4:
| var 1 : integer; 2 : string; 3 : real; |
Gruß
Danny
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!