Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
idontknow
unregistriert
Da stimm ich dir zu. Der Tipp wurde dir gegeben, da man Schleifenvariablen doch meist mit 0 initialisiert und man das schnell übersieht, dass es bei dir nicht so ist.
Warum müsste man nochmal 1 abziehen, wenn i schon 1 ist?
Es sollte vom denken doch auch eigentlich statt 1 eher 0 sein, oder? Naja egal erst einmal.
Wie bereits gesagt, wir können nur mit dem arbeiten, was du uns anbietest. Wenn der Error sagt, dass du die Grenzen überschreitest, geht wohl irgendwas schief. Daher hatte ich vorgeschlagen mal zu schauen, wie der Index ist und ob die Vektoren wirklich alle so gefüllt sind, wie du dir das denkst. Irgendwo muss ja der Fehler sein.@SP3iky: Ich glaube, sobald mir da einer auch die Hintergründe erklären kann. Letztlich probiere ich ~95% was mir hier gezeigt wird, je nach Qualität eben, aus.
Achja: Beide Vektoren sind mit 5 Integer-Variablen bestückt.
Das wäre bei einem 16-bit Integer. Standard auf normalen PCs ist 32-bit.PS: Wäre das bei einem normalem Integer nicht 32.767?
Wäre nur schön wenn mir wer plausibel erklären würde, weshalb es bereits bei Runde Eins, ein Dank geht an den Debugger, dazu kommt.
Theoretisch sollte es doch immerhin beim ersten Mal Durchlauf dann funktionieren.
Das Ganze soll eine Klasse für große Zahlen werden. xD
Hatte es mal so versucht:
C-/C++-Quelltext
1 2 3 4 5 6 7 8 9 10 11 bool vbint::operator> (vbint vbi) { for(int i=1; i!=0;) { if(m_Base[m_Base.size()-i] > vbi.GetVec()[vbi.GetVec().size()-i]) return true; else ++i; } return false; }
Warum müsste man nochmal 1 abziehen, wenn i schon 1 ist?
Es sollte vom denken doch auch eigentlich statt 1 eher 0 sein, oder? Naja egal erst einmal.
@SP3iky: Ich glaube, sobald mir da einer auch die Hintergründe erklären kann. Letztlich probiere ich ~95% was mir hier gezeigt wird, je nach Qualität eben, aus.
Keine Ahnung warum, ich habe nichts verändert, nur MVC++2010E war geschlossen, aber jetzt geht es. ö.o
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 |
if (m_Base.size() == vbi.size()) { // Laufe von 1 bis einschließlich size() beider Vektoren for(size_t i=1; i<=m_Base.size(); ++i) { // i ist immer mindestens 1 und maximal size() if(m_Base[m_Base.size()-i] > vbi.GetVec()[vbi.GetVec().size()-i]) return true; } } // Wenn this länger, dann größer, wenn this kürzer, dann nicht größer, sonst nur größer wenn schon in Schleife return true return (m_Base.size() > vbi.GetVec().size()); |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
if (m_Base.size() == vbi.size()) { // Laufe von 1 bis einschließlich size() beider Vektoren for(size_t i=1; i<=m_Base.size(); ++i) { // i ist immer mindestens 1 und maximal size() if(m_Base[m_Base.size()-i] != vbi.GetVec()[vbi.GetVec().size()-i]) // Ziffern unterscheiden sich, also entweder this > vbi, d.h. true, oder this < vbi, d.h. false return (m_Base[m_Base.size()-i] > vbi.GetVec()[vbi.GetVec().size()-i]); } } // Wenn this länger, dann größer, wenn this kürzer, dann nicht größer, sonst nur größer wenn schon in Schleife return true return (m_Base.size() > vbi.GetVec().size()); |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
bool vbint::operator> (const vbint &vbi) const // Beachte: Referenz statt Kopie und zweimal const { if (m_Base.size() == vbi.size()) { // Laufe von 1 bis einschließlich size() beider Vektoren for(size_t i=1; i<=m_Base.size(); ++i) { // i ist immer mindestens 1 und maximal size() if(m_Base[m_Base.size()-i] != vbi.GetVec()[vbi.GetVec().size()-i]) // Ziffern unterscheiden sich, also entweder this > vbi, d.h. true, oder this < vbi, d.h. false return (m_Base[m_Base.size()-i] > vbi.GetVec()[vbi.GetVec().size()-i]); } } // Wenn this länger, dann größer, wenn this kürzer, dann nicht größer, sonst nur größer wenn schon in Schleife return true return (m_Base.size() > vbi.GetVec().size()); } |
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »CodingCat« (31.03.2012, 12:02)
Alles was du schriebst passt nicht in mein Konzept.
Warum antwortest du eigentlich noch? Es funktioniert doch.
Trotzdem erhältst du ein Danke von jedem der über eine Suchmaschine nun sein Problem lösen konnte.
Alles was ich schreibe ist haargenau auf das abgestimmt, was sich aus deinen vagen Posts erahnen lies.
Weil es überhaupt nicht richtig sein kann, wenn es auch nur annähernd was mit dem zu tun hat, was du zuvor gezeigt hast.
Nein, alles war explizit für dich und deinen konkreten Integer-Vergleich geschrieben, in der Hoffnung, dich damit in deinen persönlichen Programmier-Fähigkeiten voran zu bringen. Jemand anderem wird das nur marginal nützen, weil der Kontext dieses Threads schon viel zu umfangreich ist.
Könnten wir diese ständigen Diskussionen nachdem ich mal was gefragt habe eindämmen? Schön ist das nicht.
Werbeanzeige