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.
    Das else gehört in dieselbe Spalte wie das if .

    Und die schließenden Klammern } ebenso. (Auch beim for )



  • DirkB schrieb:

    Vielleicht kommst du selber drauf:
    Worauf beziehen sich die break ?

    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 die break ?

    Ich denke, dann springt er aus dem if und die Schleife macht den nächsten Turnus....

    Und was passiert ohne break?


Anmelden zum Antworten