for schrittweite abhängig machen?
-
Hi, weiß jemand ob es geht und wenn ja wie?
Die schrittweite einer for-schleife soll sich danach richten
ob eine variable 0 oder 1 ist.etwa so:
wenn var=0 dann ptr1 = ptr1 -> next
und
wenn var=1 dann ptr1 = ptr1
Brauch eine schnlle antwort wenns geht.
Bin gerade voll im stress.
-
Du kannst in der Schleife, wenn var 1 ist einfach deine Laufvariable wieder dekremieren, wenn es das ist, was du meinst...
-
Aber ich bin ja schon durch die schrittweite in der erketteten liste ein element weiter gegangen.
wie komme ich den dann wieder mit dem zeiger auf das element davor?
klappt das mit ptr1--; ?
-
Ein Beispiel:
int ptr; // Laufvariable int var; (...) for(ptr=0;ptr<?;ptr++) { (...) if(var == 1) ptr--; }
So ungefähr... Damit setzt du ptr wieder auf den Wert, den es vor Durchgang der Schleife hatte. Poste doch einfach mal 'n bisschen Code, wenn du was anderes meinst...
-
Wenn's um eine verkettete Liste geht:
/* Verständliche Version */ for (...; ...; ) { ... if (var == 0) ptr = ptr->next; //else ptr = ptr; // sinnlos, ptr sich selbst zuzuweisen, deshalb machen wir das auch nicht } /* Kurze Version */ for (...; ...; var == 0 ? ptr = ptr->next : 0) { ... }
-
for(foo; bar; ptr1 = (var1 == 1) ? ptr1 : ptr1->next)...
trinaeroperator ?: funktioniert so:
if (bedingung)
var = konsequenz;
else
var = alternative;wird zu
var = bedingung ? konsequenz : alternative;warum laesst du das inkrement im for-kopf nicht leer und setzt es stattdessen ans ende des schleifenkoerpers?
for(foo; bar; ) { ... if (var1 == 0) ptr1 = ptr1->next; }