Autor Beitrag
meta
Hält's aus hier
Beiträge: 2



BeitragVerfasst: So 21.01.07 18:52 
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:

ausblenden volle Höhe 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 user profile iconChristian S.: Delphi-Tags hinzugefügt
Moderiert von user profile iconChristian S.: Titel angepasst
Calculon
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 676

Win XP Professional
Delphi 7 PE, Delphi 3 PRO
BeitragVerfasst: 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:
ausblenden Delphi-Quelltext
1:
if (A[i]<=5and (A[i]>=3then...					


Gruß
--
stifflersmom
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 194

XP /XP PRO/ SuSE div.
D1 - D7, BDS 2006
BeitragVerfasst: 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]<=5AND (A[i]>=3then ...

Und hier willst Du doch den ganzen Block ausführen lassen, oder:
ausblenden 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
ausblenden Delphi-Quelltext
1:
2:
3:
4:
 
Begin

 End;
Teil
Moin
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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...

ausblenden volle Höhe 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 Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mo 22.01.07 00:04 
Vielen Dank,

habe jetzt meine Fehler verstanden!


mfg,

meta
stifflersmom
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 194

XP /XP PRO/ SuSE div.
D1 - D7, BDS 2006
BeitragVerfasst: Mo 22.01.07 15:48 
user profile iconGrenzgaenger 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
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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.


Zuletzt bearbeitet von Luckie am Mo 22.01.07 16:28, insgesamt 1-mal bearbeitet
Danny W.
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 296

Windows XP, WIN 2000
Delphi 2005 PE
BeitragVerfasst: 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

ausblenden Delphi-Quelltext
1:
2:
3:
var 1 : integer;
    2 : string;
    3 : real;


oder

ausblenden Delphi-Quelltext
1:
2:
3:
4:
var 
    1 : integer;
    2 : string;
    3 : real;


Gruß
Danny

_________________
"Ich find den Fehler nicht. Der Artist wird immer als "Syntax Error" gezeigt :("
"Ach verdammt, der Artist heißt wirklich "Syntax Error" xD"