problem mit index
-
Hi,
ich versuche eine Funktionzu zu schreiben, die überprüft, ob ein Array element gleich 5 ist, index merkt und ab diesen Index Schleife weiter durchläuft. Mein Codefragment:
double m[] = {2, 4, 5, 3, 1, 5, 2, 5, 6, 5, 10, 7}; std::vector<double> m_max; int l = 0; for(int start = l; start < 12; start++) { if (m[start] == 5){ m_max.push_back(m[start]); l = start; break; } }z.B findet erte Zahl 5, speichert in m_max und bei der zweiten Schleifedurchlauf
fängt ab index 3(nicht ab 0)an.
Ich brauche hilfe, allein finde ich den Fehler nicht.Danke Euch,[/quote]
-
Was ist dein Fehler?
Unabhängig davon, dass ich nicht weiß, was du willst, hat dein Code ein paar Probleme:
- In Zeile 4 gehst du bei 1 los, Arrays fangen bei 0 an.
- In Zeile 6 vergleichst du double-Werte mittels ==. Ganz gefährlich, weil es oftmals nicht so funktioniert wie man denkt.
- Schrecklich unpassende Variablennamen
- Schrecklich unpassende Einrückung
-
Danke SeppJ für die Antwort,
Ich habe variablename geändert, array fängt hier von 0 an und sobald die Bedinung gilt speichert den Index(start) in aktuellen Index(curr_start) dann erwarte ich dass bei der zweiten Durchlauf start = 3.
int m[] = {2, 4, 5, 3, 1, 5, 2, 5, 6, 5, 10, 7}; std::vector<double> m_max; int curr_start = 0; for(int start = curr_start; start < 12; start++) { if (m[start] == 5){ m_max.push_back(m[start]); curr_start = start + 1; break; } }
-
Ich sehe keinen zweiten Durchlauf. Vermutlich ist dies dein Problem.
Warum lässt du nicht einfach weiterlaufen, wenn du danach sowieso an der aktuellen Stelle wieder anfangen willst?
-
das ein kleines Beispiel, das mein Programm ähnelt. Hier macht es kein Unterschied ob Schleife weiterläuft, aber bei größere arrays mit einer komplexen Bedingung in if dauert Ausführung des Programms sehr lange und ich möchte die Rechenzeit verkürzen.
-
Du kannst die Laufzeit nicht verbessern. Es sei denn, du kümmerst dich schon beim Einfügen darum, dass neue Einträge einsortiert werden, also die Liste immer in einem sortierten Zustand ist. Wenn das der Fall ist, dann kannst du mit der Binary Search deine Suchzeit optimieren. Andererseits wären evtl. auch die STL Container ein Blick wert, da diese bereits optimiert sind.