Problem mit vector.size()



  • Hallo Leute,

    ich sitzte jetzt schon Stunden an einem Fehler und hab so langsam die Nase voll 😉

    Es geht um folgendes:
    ich habe eine Klasse Polynom geschrieben, die wie der Name schon sagt ein Polynom speichert. Die Koeffizienten werden im vector vecKoeff gespeichert, und zwar so:

    void Polynom::setKoeff(long double b, int i) //b: b*x^i
    {	
    	if(i>getGrad()) 
    	{
    		for(int j=getGrad();j<=i;j++)
    			{vecKoeff.push_back(0);}
    		vecKoeff.at(i)=b;
    	}
    	else
    	{
    		vecKoeff.at(i)=b;
    	}
    
    }
    

    (nicht lachen, bin Anfänger. Kann mir vorstellen, das es eleganter geht.Immer her mit Tipps ;))

    Die Funktion ist aber nicht das eigentliche Problem. Habs nur mal mitgepostet, falls es für die Fehlerlösung nötig ist. Das Problem macht die Funktion getGrad(), die den Grad des Polynoms wiedergeben soll, also die höchste Potenz die vorkommt.

    int Polynom::getGrad()
    {
    	int Grad = (vecKoeff.size());
    	Grad = Grad-1;
    	return Grad;
    }
    

    Hier klappt was nicht. Denn die Funktion liefert z.B. bei einem Polynom 4.Grades den Wert 5 zurück, und zwar auch wenn ich die Zeile

    Grad = Grad-1;
    

    ersetze durch (z.B.)

    Grad = Grad-4;
    

    Das verstehe ich absolut nicht, warum das unabhängig davon ist, das man etwas abzieht 😞
    Wenn ich hingegen gar nichts abziehe, kommt es bei setKoeff zu einem Überlauf, was ja noch verständlich ist.

    Ich dreh bald durch 😃 ,also helft mir bitte! Vielen Dank.



  • ++Marc0 schrieb:

    ich habe eine Klasse Polynom geschrieben, die wie der Name schon sagt ein Polynom speichert. Die Koeffizienten werden im vector vecKoeff gespeichert, und zwar so:

    Ich gehe alleine schon davon aus, dass du den Vektor falsch verwendest (mit jedem Aufruf von setKoeff fügst du i Elemente hinzu, das es bei dem ersten Aufruf nicht an der Zeile "vecKoeff.at(i)=b;" kracht, deutet darauf hin das du bereits vorher weitere Elemente hinzugefügt hast.

    cu André



  • Hmm jetzt funktioniert auf einmal alles 😃

    Keine Ahnung was da los war, hab eigentlich gar nichts geändert, Projekt nochmal neu erstellt und plötzlich gibts kein Problem mehr oO
    Vielleicht ein Fehler in Visual Studio...

    Viele Grüße,
    Marco



  • ++Marc0 schrieb:

    Vielleicht ein Fehler in Visual Studio...

    Will dir nicht zu nahe treten, aber es war wohl vermtl eher ein Fehler deinerseits 😉



  • Paul Manns schrieb:

    Will dir nicht zu nahe treten, aber es war wohl vermtl eher ein Fehler deinerseits 😉

    Einverstanden, dann habe ICH es aber auch geschafft ihn zu beheben :p


Anmelden zum Antworten