AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem : rechnen mit arrays

Ein Thema von Muffel · begonnen am 27. Aug 2008 · letzter Beitrag vom 28. Aug 2008
Antwort Antwort
Muffel

Registriert seit: 11. Aug 2007
11 Beiträge
 
#1

Problem : rechnen mit arrays

  Alt 27. Aug 2008, 23:25
Hallo,
ich habe ein kleines großes problem.

ich habe in meiner memo versch zahlen wie

20
30
40
50
...

nun will ich aus diesen zahlen den mittelwert bilden.
jedoch weis ich nicht wie ich das machen kann..
bis jetzt kann ich das nur manuel machen

Delphi-Quellcode:
while i < t do begin
   v := a * i ;
  v := v * 3.6;
   i := i+1;

  Memo1.Lines.Add(FloatToStr(v));
  end;



  zahl1 := StrToFloat(Memo1.Lines[1]);
  zahl2 := StrToFloat(Memo1.Lines[2]);
  zahl3 := StrToFloat(Memo1.Lines[3]);
  gesamt := zahl1 + zahl2 + zahl3;
  ende := gesamt / t;

  Edit1.Text := FloatToStr(ende);
abhängig von i werden mehrere einträge gemacht.
mit dieser manuellen art kann ich nur von den 1. drei reihen die zahlen addieren und die durch i teilen ..

kann mir einer helfen wie ich die Memo Line inhalte zusammenrechne ?

MfG

Muffel
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Problem : rechnen mit arrays

  Alt 27. Aug 2008, 23:28
Delphi-Quellcode:
for i := 0 to Memo.Lines.Count do
begin
    Summe := Summe + StrToIntDef( Memo.Lines[i], 0);
end;

mittelwert := summe / Memo.Lines.Count;
Markus Kinzler
  Mit Zitat antworten Zitat
Muffel

Registriert seit: 11. Aug 2007
11 Beiträge
 
#3

Re: Problem : rechnen mit arrays

  Alt 28. Aug 2008, 00:06
erstmal vielen dank für die schnelle antwort

habe aber immernoch ein problem,
als mittelwert der werte

0
18
36
54
72

wird mir 1,03518951684639E269 ausgegeben .... =/

Delphi-Quellcode:

  while i < t do begin
   v := a * i ;
  v := v * 3.6;
   i := i+1;

  Memo1.Lines.Add(FloatToStr(v));
  end;

  for i := 0 to Memo1.Lines.Count do
begin
    Summe := Summe + StrToIntDef( Memo1.Lines[i], 0);
end;

Mittelwert := Summe / Memo1.Lines.Count;

  Edit1.Text := FloatToStr(Mittelwert);
end;
  Mit Zitat antworten Zitat
Benedikt
(Gast)

n/a Beiträge
 
#4

Re: Problem : rechnen mit arrays

  Alt 28. Aug 2008, 00:52
Nabend,

spontan würd mir die Frage einfallen: Hast du Summe vorher mal mit 0 initialisiert?

Und ansonsten: for i := 0 to Memo1.Lines.Count-1 do MfG Benedikt
  Mit Zitat antworten Zitat
oldmax

Registriert seit: 27. Apr 2006
Ort: Gieboldehausen
167 Beiträge
 
#5

Re: Problem : rechnen mit arrays

  Alt 28. Aug 2008, 06:30
Hi

Zitat:
spontan würd mir die Frage einfallen: Hast du Summe vorher mal mit 0 initialisiert?
Ich seh es genauso, obwohl bei dem Codeschnipsel alles andere auch möglich ist....
Manchmal frage ich mich, wie ihr eure eigenen Programme nachvollziehen könnt, ohne ein wenig Form in die Zeilen zu bringen. Einrücken heißt, 2-4 Leerzeichen nach jedem Begin und vor End wieder in die Zeile zurück. Außerdem, es gibt die F7 Taste, die ein Zeilenweises abarbeiten der Anweisungen ermöglicht und wenn dann mit dem Cursor auf die Variablen gegangen wird, ist durch eine Anzeige der Inhalte eine Kontrolle möglich. Dann stellst du selber gleich fest, warum es zu solchen "unerwarteten" Ergebnissen kommt. Auch Haltepunkte sind in der Form hilfreich. Nicht, das wir unsere Hilfe verweigern, aber der Hinweis auf Formatierung ist auch eine Hilfe. Erstaunlich nur, wie selten er beachtet wird.
Gruß oldmax
Noch ist mein Rechner mir zu Diensten.... ansonsten habe ich die Macht ihn zu vernichten !
  Mit Zitat antworten Zitat
Muffel

Registriert seit: 11. Aug 2007
11 Beiträge
 
#6

Re: Problem : rechnen mit arrays

  Alt 28. Aug 2008, 18:19
danke für die tollen ratschläge =)

jetzt hab eich aber noch ein problem...

der rechnet jetzt den durschnitt aus , aber erst ab einem bestimmten wert.

wenn ich jetzt für den wert t oder a einen wert eingebe der kleiner als 5 ist kommt als durchschnittsgeschw. 0

wenn ich dann bei beiden 5 oder mehr eingebe kommt dannt eine durchschnittgeschwindigkeit.
woran kann das liegen ?

kleine bemerkung
weill einfach nur die durchschnittsgeschwindidkeit bei einem auto rechnen dabei sind halt
t oder a variabel
also die zeit wie lange er beschleunigt und die stärke der beschleunigung....

warum fängt er erst ab t und a =5 an zu rechnen ?
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: Problem : rechnen mit arrays

  Alt 28. Aug 2008, 18:33
Hallo,

den Fehler aufzeigen kann nur, wer den Quellcode kennt - das bist momentan du alleine.

Grüße vom marabu
  Mit Zitat antworten Zitat
HalloDu

Registriert seit: 24. Apr 2006
Ort: Oelde
267 Beiträge
 
Delphi 2009 Professional
 
#8

Re: Problem : rechnen mit arrays

  Alt 28. Aug 2008, 18:57
Meine spontane Vermutung ist (also prakitsch nur ), dass du Floatwerte in die Memo schreibst, weiß natürlich nicht ob das wirklich Fließkommawerte sind, da ich a und v nicht kenne, aber aufgrund des mal 3.6 recht wahrscheinlich, und die dann mit StrToIntDef ausliest was bedeutet, dass anstatt alle Werte die Hinterkommastellen haben, einfach nur 0 eingelesen wird. Was dazu führt, dass der Durchschnitt gedrückt wird. Naja, versuch mal statt StrToIntDef StrToFloatDef zu benutzen.

Achso und immer brav Variablen initialisieren.

Außerdem find ich den Weg über die Memo eher unpraktisch, Array oder mit Objekten in ner Objektlist (Wenn auch ein bissle oversized) wäre denke ich besser.
Frederic H.
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#9

Re: Problem : rechnen mit arrays

  Alt 28. Aug 2008, 21:00
so, bin jetzt unschlüssig wie ich dir antworten soll, auf das memo oder auf deinen titel, oder doch was anderes?

also erst mal durchsnitt mit einem array of doubles ausrechen

mydurchschnitt := mean(myArrayOfFloats); aber wenn du die daten eingeben willst und noch 'n bischen bearbeiten, würd ich kein array nehmen sondern eine TObjectList .... und ein schönes objekt implementieren, das die daten bereitstellen und bearbeiten kann

zum bearbeiten kannst ja ein stringgrid hernehmen, und hinter jeder zelle dein passendes objekt hängen... die verwaltung hierzu machst du am besten über eine objectlist

die berechnung würd ich dann über ein kleines schleifchen über die objectlist machen

dann kannst dir raussuchen welchen durchschnitt du auch gerne haben möchtest ...


ps: @muffel, dein geschreibsel kann man ja kaum entziffern
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz