Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » schleifenproblem

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
03.06.2005, 12:21 Uhr
~keine ahnung
Gast


also ich habe eine schleife und die vergleicht punkte miteinander die in einem array stehen. da die punkte größtenteils sehr ähnlich sind würde ich jetzt gerne nur noch jeden xten punkt (z.b jeden fünften) miteinander vergleichen. wie kann ich das machen?

hier mal die schleife:

for (int i = 0; i < arraysize-1; i++)
{

Intens1 = pDoc->Chromy->getPoint(i).y;
Intens2 = pDoc->Chromy->getPoint(i+1).y;
RetTime = pDoc->Chromy->getPoint(i).x;
Bezugspunkt = pDoc->Chromy->getPoint(5).y;

if (Intens1<Bezugspunkt-(Bezugspunkt*dlg.Abweichung/100))
{

if (Intens2>Intens1)
{
myarray[count] = RetTime/1000;
count++;
}
}

}

wenn ihr mehr code braucht schaut bitte in mein letztes post.

vielen dank schon mal im voraus für eure hilfe mfg patrick
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
03.06.2005, 12:27 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


meinst du nun

Punkt1 mit Punkt5, Punkt2 mit Punkt6, usw

oder willst du

Punkt1 mit Punkt5, mit Punkt 10, mit Punkt 15 usw

vergleichen?
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
03.06.2005, 12:28 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



Zitat:

also ich habe eine schleife und die vergleicht punkte miteinander die in einem array stehen. da die punkte größtenteils sehr ähnlich sind würde ich jetzt gerne nur noch jeden xten punkt (z.b jeden fünften) miteinander vergleichen. wie kann ich das machen?


was genau meinst du mit jeden xten punkt... welche punkte denn alle? nur einen bestimmten oder alle?...

also meinst du z.b. punkt 6 mit punkten 1 11 16 21 usw... was soll passieren wenn die grenzen des arrays überschritten werden? einfach kein vergliche...

erklär mal bitte ein bisschen genauer...


Bearbeitung:

lol Flo hats auch nicht geschnallt


--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 03.06.2005 um 12:28 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
03.06.2005, 12:50 Uhr
~keine ahnung
Gast


ja ich seh schon ist gar nicht so einfach das problem genau zu formulieren. ich versuchs nochmal. also momentan wird jeder punkt aus dem array (ist dann intens1) mit dem bezugspunkt verglichen. jetzt soll aber nur noch z.b jeder fünfte punkt mit dem bezugspunkt verglichen werden. das ganze sind x/y koordinaten in einem graph und ich will die minimas finden. da es aber sehr viele werte sind die sich sehr ähnlich sind und dann auch wieder viele werte in denen sich etwas ändert würde es zu einem enormen preformance gewinn führen wenn man nur noch z.b jeden fünften wert vergleicht. vielleicht auch jeden dritten oder zehnten da muss ich noch rumprobieren was dann das beste ergebniss liefert. ach so bei dem vergleich zwischen intens1 und intens2 trifft dann im prinziep das gleiche zu.

mfg patrick
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
03.06.2005, 13:41 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


naja so einfach das zu verändern ist es nicht, du musst schon immer zwei hintereinanderliegende punkte vergleichen, damit du die steigung dort erhälst. nun kannst du aktuelle steigung und die vom nächsten stück vergleichen, wenn sich die steigung umgekehrt hat (z.b vorher war si positiv und nachher negativ) musst du dazwischen nach einem null-steigungs-wert suchen, usw.

"Überspringen" von schritten kannst du ja in der for-schleife erledigen:


C++:
for(int x = 0; x < irgendwas; x += 15)



würde immer 0, 15, 30, 45 geben, da muss als dritter parameter nicht x++ stehen!
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
03.06.2005, 14:15 Uhr
~keine ahnung
Gast


danke nach der schleifendeklaration hab ich gesucht. also diese i += 15 anstatt von i++.

es werden nur die y koordinaten miteinander verglichen. x ist die zeit und es ist interessant zu welcher zeit x die y koordinate abnimmt. man vergleicht also solange die y koordinaten miteinander bis y am kleinsten ist und gibt dann zu dem punkt den x wert (also die zeit) aus. das problem daran ist wie schon erwähnt das viele werte ähnlich sind. so ist also das minimum nicht bei 12,5 sec sondern ich bekomm werte (22) zwischen 12,1-13,3. mit der neuen schleife sinds jetzt nur noch 7 werte. jetzt muss ich halt noch eine möglichkeit finden aus diesen 7 oder allgemein x werten den mittelwert zu berechnen und anzeigen lassen. das problem liegt darin ich habe z.b 5 minimas ca bei 12,5/17,5/22,5 usw bei mir steht jetzt aber drin 12,3/12,4/12,7/13,2 und dann das nächste minima 17,4/17,6/18,2 usw usw. da man nicht den genauen sondern nur ungefähren wert braucht kann man schon per hand sagen o.k mein minimum ist ca bei 12,5 aber es würde halt schöner sein wenn einfach der mittelwert drinstehen würde. wenn dir dafür auf die schnelle ne lösung einfällt......

danke auf jeden fall mfg patrick
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: