Veränderungsbedingung
-
Ich bin neu hier und wollte mal eine Frage stellen.
int n=5; int t=0; int main(int argc, const char * argv[]) { for (n=5; n <= 100; n = n+2) //Zahl herstellen { std::cout <<n<< " Feststeller\n"; if (n<=9) { std::cout <<n<< " =n Primzahl"<<t<<" ist Teiler \n"; break; } else { for (t= 3; t <=21 ; t=t+2) //Teiler herstellen { std::cout <<t<< " =Teiler "; if(n % t == 0) // ... wenn n durch t teilbar ist, ... { std::cout <<n<< " NPZ\n";// ... dann haben wir keine primzahl break; } else { std::cout <<n<< " Prim\n"; //wenn n durch keine der zahlen teilbar ist, dann haben wir eine primzahl gefunden break; } } } } std::cout <<"Programmende"<<""; return 0; }
Mein Programm läuft mit einem kleinen Fehler, aber jetzt hab ich die 3. Bedingung in der 2. For-Schleife geändert, und Xcode sagt: Loop will ran at most once increement never executet, und er unterstreicht die Veränderungsbedingung im 2. For.
Das verstehe ich nicht...
-
Naja, du springst halt in deiner ersten if Abfrage immer aus der Schleife raus.
Zweites Problem: wenn n%t! =0 folgt daraus nicht dass nach eine Primzahl ist. Das gilt nur wenn das für alle ts gilt.
-
Vielleicht kommst du selber drauf:
Worauf beziehen sich die
break
?Und wann werden diese ausgeführt?
PS: Dein Einrückungsstil ist sehr unleserlich.
Daselse
gehört in dieselbe Spalte wie dasif
.Und die schließenden Klammern } ebenso. (Auch beim
for
)
-
DirkB schrieb:
Vielleicht kommst du selber drauf:
Worauf beziehen sich diebreak
?Ich denke, dann springt er aus dem if und die Schleife macht den nächsten Turnus....
-
Aus dem
if
springt er sowieso bei der }https://de.wikibooks.org/wiki/C-Programmierung:_Kontrollstrukturen#break
Dieses "ich denke" heißt "nicht wissen"
Du musst aber über jedes Zeichen deines Programms wissen, was es bewirkt.
-
otto56 schrieb:
DirkB schrieb:
Vielleicht kommst du selber drauf:
Worauf beziehen sich diebreak
?Ich denke, dann springt er aus dem if und die Schleife macht den nächsten Turnus....
Und was passiert ohne break?