Hallo

Hauptsächliches Problem: Du verwendest nur Integervariablen für deine teilweise recht umfangreichen Berechnungen. Scheinbar ist dir nicht klar, das bei allen Ergebnissen (und auch bei den Zwischenwerten auf dem Rechenweg) die Nachkommastellen abgeschnitten werden. Du solltest zumindest den Datentyp "float" verwenden...

Noch ein Tipp zur Optimierung: Wiederkehrende Berechnungen sollte man einmalig ausrechnen, wenn die Berechnung mehrfach vorkommt oder sich das Ergebniss innerhalb der Schleife nicht ändert:

if(odolinks/odorechts < odoziellinks/odozielrechts) {vl++; vr--;}
else if (odolinks/odorechts > odoziellinks/odozielrechts) {vl--; vr++;}

Gruß

mic