rekursiver Aufbau einer Matrix
-
Hallo @all,
nach längerer Zeit arbeite ich mal wieder an diesem Programm weiter.
Und habe auch prompt wieder ein Problem.
und zwar möchte ich zwei Vektoren bzgl ihrer Länge vergleichen.
Mich interessieren dabei nur drei Fälle: a>b, a=b, a<b.
Anbei ein paar Codeschnipsel:using namespace std; bool berechne(const bool graphen, const vector<matrix::werteTyp> rechenVektor, const vector<matrix::werteTyp> rechenVektorALT) { vector<matrix::werteTyp> rechenVektor01; vector<matrix::werteTyp> rechenVektor02; vector<matrix::werteTyp> zwischenErgebnisVektor; stanzMatrix aktuelleStanzMatrix; int rechenVektorHalbeLaenge; matrix::groessenTyp laenge; laenge = rechenVektor.size(); printf("P(%2d, %2d) = <", ausgabeN, ausgabeK); } if (ausgabeK == (anzahlErzeugendeElemente+1)) { ausgabeN++; ausgabeK--; } else { if (rechenVektorALT.size() == rechenVektor.size()) { ausgabeN--; ausgabeK++; } else if (rechenVektorALT.size() < rechenVektor.size()) { ausgabeN--; ausgabeK++; } else if (rechenVektorALT.size() > rechenVektor.size()) { ausgabeN++; ausgabeK--; } for (vector<matrix::werteTyp>::const_iterator vektorZaehler = rechenVektor.begin(); vektorZaehler != rechenVektor.end(); ++vektorZaehler) { cout << " " << *vektorZaehler; } cout << " >\n"; } rechenVektorHalbeLaenge = (int) laenge; rechenVektorHalbeLaenge /= 2; if (rechenVektorHalbeLaenge>0) { for (matrix::groessenTyp h=0; h < rechenVektorHalbeLaenge; h++) { rechenVektor01.push_back(rechenVektor[h]); rechenVektor02.push_back(rechenVektor[rechenVektorHalbeLaenge+h]); } } else { rechenVektor01.push_back(0); rechenVektor02.push_back(1); } aktuelleStanzMatrix = stanzMatrix::stanzMatrix((matrix::groessenTyp) rechenVektorHalbeLaenge, 1); if (debug_Ausgabe) cout << aktuelleStanzMatrix << endl; for (matrix::groessenTyp h=1; h <= rechenVektorHalbeLaenge; h++) { zwischenErgebnisVektor = aktuelleStanzMatrix.stanzAddition(aktuelleStanzMatrix.stanzMultiplikation(aktuelleStanzMatrix.zeile((matrix::groessenTyp) h), rechenVektor02), rechenVektor01); } if (zwischenErgebnisVektor.size()>1) { alteLaenge = laenge; berechne(graphen, zwischenErgebnisVektor, rechenVektor); } else if (zwischenErgebnisVektor.size()==1) { ergebnisVektor.push_back(zwischenErgebnisVektor[0]); } else { cout << "ENDE\n"; } return true; }
Das Problem ist, selbst wenn in der Zeile
if (rechenVektorALT.size() == rechenVektor.size())
die beiden Vektoren identisch sind, erkennt VC das nicht und geht in einen der beiden else-Fälle.
Gibt es evtl bekannte Probleme mit size?
Oder bin ich zu doof?
Oder wende ich size einfach nur falsch an?