Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Summe, Mittelwert, min und max ermitteln... (https://www.delphipraxis.net/114383-summe-mittelwert-min-und-max-ermitteln.html)

sqrt 9 24. Mai 2008 12:02


Summe, Mittelwert, min und max ermitteln...
 
HI

Könnte mir vielleicht jemand bei einem Bsp weiterhelfen!!!

Die Aufgabenstellung lautet:

Ermittle aus einer in einem MEMO eingegebenen Zahlenreihe Summe, Mittelwert, Max und Min.

Ich habe keine Ahnung wie das funktionieren soll und finde nirgendwo hilfe!!!

pls HELP :gruebel:

Die Muhkuh 24. Mai 2008 12:04

Re: Summe, Mittelwert, min und max ermitteln...
 
Hi und herzlich Willkommen. :dp:

Wo hapert es denn? Was versteht Du nicht?

Vielleicht hilft es Dir auch erstmal ein Struktogramm zu den einzelnen Funktionen zu erstellen. Danach dürfte die Code-Umsetzung ein Kinderspiel sein.

DP-Maintenance 24. Mai 2008 12:11

DP-Maintenance
 
Dieses Thema wurde von "Sharky" von "Programmieren allgemein" nach "Object-Pascal / Delphi-Language" verschoben.
Wird hier wohl am ehesten passen.

sqrt 9 24. Mai 2008 12:28

Re: Summe, Mittelwert, min und max ermitteln...
 
also wenn ich eine Zahl ins Memo eingebe, gibt er die Summe richtig an aber ich weiß nicht wie ich die Zahlen aus der 2. 3.... Zeile dazuzählen kann :?:

Die Muhkuh 24. Mai 2008 12:30

Re: Summe, Mittelwert, min und max ermitteln...
 
Kleiner Tipp: For-Schleife ;)

DeddyH 24. Mai 2008 12:32

Re: Summe, Mittelwert, min und max ermitteln...
 
Zitat:

Zitat von Die Muhkuh
Kleiner Tipp: For-Schleife ;)

Und zwar für alle 4 Werte ;)

sqrt 9 24. Mai 2008 12:35

Re: Summe, Mittelwert, min und max ermitteln...
 
wow ist ja richtig was los hier!!!!

thx für die schnelle Hilfe aber ich bin noch nicht wirklich vertraut mit delphi....hat noch immer nicht geklingelt :gruebel:

Die Muhkuh 24. Mai 2008 12:36

Re: Summe, Mittelwert, min und max ermitteln...
 
Was eine For-Schleife ist weißt Du (vielleicht klingelt es auch bei While-Do-Schleife oder Repeat-Until-Schleife?)?

Fussball-Robby 24. Mai 2008 12:37

Re: Summe, Mittelwert, min und max ermitteln...
 
Klick. Suchwörter: For-Schleife, StrToFloat/StrToInt, FloatToStr/IntToStr, Max(), Min()

DeddyH 24. Mai 2008 12:37

Re: Summe, Mittelwert, min und max ermitteln...
 
Delphi-Quellcode:
for i := 0 to Memo.Lines.Count - 1 do...
Die erste Zeile hat immer den Index 0, die letzte Zeile daher den Index Anzahl - 1.

Sharky 24. Mai 2008 12:37

Re: Summe, Mittelwert, min und max ermitteln...
 
Zitat:

Zitat von sqrt 9
..hat noch immer nicht geklingelt :gruebel:

Hai srt 9,

ein Memo hat die Eigenschaft Delphi-Referenz durchsuchenLines. In jeder dieser "Lines" steht der Text von einer Zeile des Memos (Erste Zeile ist .Lines[0]!).

Jetzt kannst Du mit einer Schleife über alle Zeilen des Memos gehen und mit jeder einzelnen Zeile die notwendigen Operationen durchführen.

sqrt 9 24. Mai 2008 12:39

Re: Summe, Mittelwert, min und max ermitteln...
 
ah ok und was wenn die anzahl der Zahlen nicht vorgegeben bzw unbegrenzt ist?

sqrt 9 24. Mai 2008 12:41

Re: Summe, Mittelwert, min und max ermitteln...
 
oh habe nicht ganz fertig gelesen... :oops:

schon klar

thx

Sharky 24. Mai 2008 12:41

Re: Summe, Mittelwert, min und max ermitteln...
 
Zitat:

Zitat von sqrt 9
ah ok und was wenn die anzahl der Zahlen nicht vorgegeben bzw unbegrenzt ist?

Das wird bei dem code von DeddyH berücksichtigt. In .Lines.Count steht immer die aktuelle Anzahl der Zeilen -1

Daniel 24. Mai 2008 12:44

Re: Summe, Mittelwert, min und max ermitteln...
 
Zitat:

Zitat von sqrt 9
[...] aber ich bin noch nicht wirklich vertraut mit delphi....hat noch immer nicht geklingelt :gruebel:

Dann ist es vielleicht mal an der Zeit, sämtliche Informatik-Lehrer des gesamten Landes anzuprangern. Offenbar fordern sie alle von ihren Schülern Stoff ab, der nie behandelt wurde und zu dem auch niemals Unterlagen verteilt wurden.

sqrt 9 24. Mai 2008 12:45

Re: Summe, Mittelwert, min und max ermitteln...
 
danke an alle!!!! :hi:

ich werd jetzt mal probieren und meld mich wieder falls es noch was gibt!!!!

thx Michael

sqrt 9 24. Mai 2008 13:02

Re: Summe, Mittelwert, min und max ermitteln...
 
irgendetwas klppt leider noch nicht!!! :(

wenn ich eine Zahl eingebe funzt alles. Sobald ich in die nächste Zeile eine neue Zahl eingebe kommt die Fehlermeldung:

"15
16' is not a valid integer value

was mache ich falsch?

DeddyH 24. Mai 2008 13:05

Re: Summe, Mittelwert, min und max ermitteln...
 
Zeig doch mal den Code.

sqrt 9 24. Mai 2008 13:12

Re: Summe, Mittelwert, min und max ermitteln...
 
[delphi]

procedure TForm1.Button1Click(Sender: TObject);
var summe, mitte, max, min:double;
i, zahl: integer;
begin

for i := 0 to Memo1.Lines.Count - 1 do
zahl:=strtoint (memo1.lines.text);
i:=???;
edit1.Text:=floattostr(i);

end;

falls ihr mich fragt was ich mir dabei gedacht hab....keine Ahnung :oops:

Die Muhkuh 24. Mai 2008 13:13

Re: Summe, Mittelwert, min und max ermitteln...
 
Hi,

Du darfst nicht Lines.Text verwenden, sondern musst Lines[I] nehmen um nur die aktuelle Zeile auszulesen. Lines.Text beinhaltet alles, was im Memo steht. ;)

sqrt 9 24. Mai 2008 13:16

Re: Summe, Mittelwert, min und max ermitteln...
 
ah ok!!!!!

wie muss ich jetzt i festlegen? jetzt zeigt er mir immer nur die letzte Zahl im Memo an

i:=zahl+???

Mikender 24. Mai 2008 13:16

Re: Summe, Mittelwert, min und max ermitteln...
 
Zitat:

Zitat von sqrt 9
[delphi]

procedure TForm1.Button1Click(Sender: TObject);
var summe, mitte, max, min:double;
i, zahl: integer;
begin

for i := 0 to Memo1.Lines.Count - 1 do
zahl:=strtoint (memo1.lines.text);
i:=???;
edit1.Text:=floattostr(i);

end;

falls ihr mich fragt was ich mir dabei gedacht hab....keine Ahnung :oops:

Mal ne Frage gibst du auch Komma-Zahlen ein dann müsstest du FloatToStr benutzen
und i ist Integer also nimm am besten intToStr (wegen der Form :-D )
an i solltest du gar nichts ändern
und für die summe mach doch einfach Summe:=summe+ Memo1.Lines
für den Durchschnitt teile dies durch den Count+1

und min und max sind am leichtesten die kannst du dir selber überlegen :lol:
(TIPP: nimm ne if-Abfrage(nicht Schleife :lol: ))

[EDIT]Rechtschreibfehelr verbessert :oops: :-D [/EDIT]

Die Muhkuh 24. Mai 2008 13:18

Re: Summe, Mittelwert, min und max ermitteln...
 
Zitat:

Zitat von Mikender
für den Durchschnitt teile dies durch den Count+1

Durch Count teilen, nicht durch Count + 1, sonst mogelst Du noch ein Eintrag hinzu.

DeddyH 24. Mai 2008 13:19

Re: Summe, Mittelwert, min und max ermitteln...
 
Zitat:

Zitat von Mikender
für den Durchschnitt teile dies durch den Count+1

Sicher? :zwinker:

sqrt 9 24. Mai 2008 13:20

Re: Summe, Mittelwert, min und max ermitteln...
 
OK DANKE vielmals!!!!!! :hello:

Ich glaube jetzt hab ichs!!!!!!!!!! :-D

geht wirklich schnell bei euch!!! ;]

Mikender 24. Mai 2008 13:21

Re: Summe, Mittelwert, min und max ermitteln...
 
Zitat:

Zitat von Die Muhkuh
Zitat:

Zitat von Mikender
für den Durchschnitt teile dies durch den Count+1

Durch Count teilen, nicht durch Count + 1, sonst mogelst Du noch ein Eintrag hinzu.

:oops: Ups da hab ich mich schwer verdacht :oops:

inherited 24. Mai 2008 13:32

Re: Summe, Mittelwert, min und max ermitteln...
 
Zitat:

Zitat von sqrt 9
[delphi]

procedure TForm1.Button1Click(Sender: TObject);
var summe, mitte, max, min:double;
i, zahl: integer;
begin

for i := 0 to Memo1.Lines.Count - 1 do
zahl:=strtoint (memo1.lines.text);
i:=???;
edit1.Text:=floattostr(i);

end;

falls ihr mich fragt was ich mir dabei gedacht hab....keine Ahnung :oops:

Kurz noch zur Erklärung, weshalb du an I nichts ändern musst:
Die For-schleife setzt i auf 0 (for i := 0) und zählt dieses I dann bei jedem Durchlauf um eins hoch bis es "Memo1.Lines.Count -1" ist und führt für jedes i den Inhalt der Schleife aus

sqrt 9 24. Mai 2008 13:36

Re: Summe, Mittelwert, min und max ermitteln...
 
eigentlich habe ich mit i die summe gemeint...denkfehler!!! :smile2:

sqrt 9 24. Mai 2008 18:26

Re: Summe, Mittelwert, min und max ermitteln...
 
Hallo nochmals

ich habe es jtzt ungefähr 10 000 000 versucht aber irgendetws scheint nicht zu klappen!!!
[quote="Mikender"]
und für die summe mach doch einfach Summe:=summe+ Memo1.Lines
quote]

dieser Vorschlag ergibt folgende Fehlermeldung:
incompitable files...

tschuldigung wenn ich mich blöd anstelle!?! :oops:

DeddyH 24. Mai 2008 18:31

Re: Summe, Mittelwert, min und max ermitteln...
 
Also gut, für die Summe:
Delphi-Quellcode:
Summe := 0;
for i := 0 to Memo.Lines.Count - 1 do
  inc(Summe,StrToInt(Memo.Lines[i]));
Wobei Du eine Fehlerbehandlung selbst implementieren musst, das nehm ich Dir nicht auch noch ab ;)

sqrt 9 24. Mai 2008 18:44

Re: Summe, Mittelwert, min und max ermitteln...
 
auch das haut nicht hin!!!!! :cry:

--> left side can not be assigned to...

DeddyH 24. Mai 2008 18:49

Re: Summe, Mittelwert, min und max ermitteln...
 
Zeig mal Deinen Code, ich kann nicht hellsehen.

sqrt 9 24. Mai 2008 18:54

Re: Summe, Mittelwert, min und max ermitteln...
 
procedure TForm1.Button1Click(Sender: TObject);
var summe, mitte, max, zahl, min:double;
i: integer;
begin
summe:=0;
for i := 0 to Memo1.Lines.Count - 1 do
zahl:=strtofloat(memo1.lines[i]);
inc(summe,{hier taucht die fehlermeldung auf}strtoint(memo1.lines[i]));
edit1.Text:=floattostr(summe);

end;

wofür ist das INC überhaupt?

DeddyH 24. Mai 2008 18:56

Re: Summe, Mittelwert, min und max ermitteln...
 
Das sind Fließkommazahlen? Dann etwas anders:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var summe, mitte, max, zahl, min:double;
    i: integer;
begin
  summe:=0;
  for i := 0 to Memo1.Lines.Count - 1 do
    begin
      zahl:=strtofloat(memo1.lines[i]);
      summe := summe + zahl;
    end;
  edit1.Text:=floattostr(summe);
end;
[edit] Abschließendes end vergessen [/edit]

sqrt 9 24. Mai 2008 19:00

Re: Summe, Mittelwert, min und max ermitteln...
 
es funktioniert!!!!! :hello:

und ich trottel habe das begin und end vergessen :wall:

thx a lot!!!!!!!

xZise 24. Mai 2008 19:26

Re: Summe, Mittelwert, min und max ermitteln...
 
Hallo sqrt 9,
Inc ist eine Funktion welche den Wert der übergebenen Variable erhöht.
Standardmäßig ist das eins. (Inc = Increment)
Delphi-Quellcode:
x := 1;
Inc(x); // In x steht jetzt 2
Das ist das gleiche wie:
Delphi-Quellcode:
x := 1;
x := x + 1; // In x steht jetzt 2
Wenn du wie bei Deddy H aber um mehr als eins erhöhen möchtest, gibst du das im zweiten Parameter an:
Delphi-Quellcode:
x := 1;
Inc(x, 2); // In x steht jetzt 3 (x := x + 2)
Und das ist das gleiche wie:
Delphi-Quellcode:
x := 1;
x := x + 2; // In x steht jetzt 3
Also ganz allgemein:
Delphi-Quellcode:
x := 1;
Inc(x, n);
Delphi-Quellcode:
x := 1;
x := x + n;
Eine andere Sache übrigens: Verwende die Delphi-Tags:
[delphi]<Dein Delphicode>[/delphi]
Findest du auch als Button oben in der Mitte (du musst aber, wenn kein Text selektiert ist, auch ein zweites mal zum Schließen klicken).

Achso noch was: Wenn du etwas hinzufügen möchtest, dann editiere den Beitrag ;) Da ist neben den Zitat-Button auch ein Edit-Button (bei deinen Beiträgen natürlich nur).

Und wo ich das gerade sehe:
Inc() funktioniert nur bei Ganzzahlen (Integer).
bei Gleit/Fließkommazahlen musst du das "manuell" machen.

sqrt 9 24. Mai 2008 19:32

Re: Summe, Mittelwert, min und max ermitteln...
 
danke für dein sehr Lehrreiches Kommentar!!! :thumb:

DeddyH 24. Mai 2008 19:33

Re: Summe, Mittelwert, min und max ermitteln...
 
Außerdem sollte man die Logik von der Darstellung trennen, d.h. es wäre besser, sich für die einzelnen Anforderungen (Summe, Mittel, etc.) jeweils eine Funktion zu schreiben und diese dann aufzurufen. Beispiel für die Summe:
Delphi-Quellcode:
function SumFromStrings(const s: TStrings): double;
var i: integer;
begin
  Result := 0;
  for i := 0 to s.Count - 1 do
    Result := Result + StrToFloat(s[i]);
end;
Der Aufruf wäre dann z.B.
Delphi-Quellcode:
Edit1.Text := FloatToStr(SumFromStrings(Memo1.Lines));
Wobei ungültige Zeilen hier nicht berücksichtigt werden.

sqrt 9 24. Mai 2008 19:54

Re: Summe, Mittelwert, min und max ermitteln...
 
eine allerletzte frage hätte ich noch...

schon behoben... :-D

DeddyH 24. Mai 2008 19:56

Re: Summe, Mittelwert, min und max ermitteln...
 
n muss integer sein und Du musst dann IntToStr verwenden.
[edit] Außerdem fehlt noch ein end; [/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:25 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz