HILFE for-schleife C Verständnissproblem

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
Wissenslücke

HILFE for-schleife C Verständnissproblem

Beitrag von Wissenslücke » Mo Feb 22, 2016 5:34 pm

Hallo liebe Community,

ich versuche mir das Programmieren beizubringen und bitte hier um Hilfe. Die Ausgabe der folgenden Funktion ist: " Found: 200 375 425 ". Ich verstehe nicht wie das Programm(eine Musterlösung) diese Werte ausgeben kann. An dem Verhältniss, dass b=a+1 und c=b+1, dürfte sich nach meinem offenbar fehlerhaften Verständniss von der Funktion nichts ändern.

Sprache = C .

Code: Alles auswählen

#include <stdio.h>

int main(int argc, char **argv) {
    int a, b, c;
    for(a=0; a<998; a++) {
        for(b=a+1; b<999; b++) {
            for(c=b+1; c<1000; c++) {
                if(a*a+b*b==c*c && a+b+c==1000) {
                    printf("Found: %d %d %d\n", a, b, c);
                    return 0;
                }
            }
        }
    }
    return 1;
}

knoppi
Beiträge: 9
Registriert: So Feb 21, 2016 7:04 pm

Re: HILFE for-schleife C Verständnissproblem

Beitrag von knoppi » Di Feb 23, 2016 2:16 pm

Hallo Wissenslücke,
Wissenslücke hat geschrieben:Hallo liebe Community,

ich versuche mir das Programmieren beizubringen und bitte hier um Hilfe. Die Ausgabe der folgenden Funktion ist: " Found: 200 375 425 ". Ich verstehe nicht wie das Programm(eine Musterlösung) diese Werte ausgeben kann. An dem Verhältniss, dass b=a+1 und c=b+1, dürfte sich nach meinem offenbar fehlerhaften Verständniss von der Funktion nichts ändern.

Code: Alles auswählen

#include <stdio.h>

int main(int argc, char **argv) {
    int a, b, c;
//geht in die 1. for-Schleife und setzt a auf 0 - 1. Durchlauf/
    for(a=0; a<998; a++) {
// geht in die 2. for-Schleife und setzt b auf a+1 = 1 - 1. Durchlauf
        for(b=a+1; b<999; b++) {
// geht in die 3. for-Schleife und setzt c auf b+1 = 2 - 1. Durchlauf
// diese 3. Schleife wird ganz abgearbeitet, solange die if-Bedinggung nicht Zutrifft bevor
// das Programm zurück in die 2. Schleife springt und b um eins erhöht. Dann wieder in der 3. Schleife weiter mit
// c = b+1 = 2 und wieder ganz abarbeiten dann wieder zurück in die 2. Schleife usw. - bis die 
// 2. Schleife ebenfalls ganz abgearbeitet ist. dann erst gehts wieder zurück in die 1. Schleife und a wird um 
// eins erhöht und alles fängt von vorne an. bis halt eben irgendwann entweder alle Schleifen komplett abgearbeitet
// sind, oder die if-Bedinung Zutrifft
            for(c=b+1; c<1000; c++) {
                if(a*a+b*b==c*c && a+b+c==1000) {
                    printf("Found: %d %d %d\n", a, b, c);
                    return 0;
                }
            }
        }
    }
    return 1;
}
 
Ich hoffe, das war verständlich und konnte dir helfen :)

Viele Grüße

knoppi

PS.: das Programm läuft 81277251 mal in die c-Schleife

Wissenslücke
Beiträge: 37
Registriert: Mo Feb 22, 2016 6:03 pm

Re: HILFE for-schleife C Verständnissproblem

Beitrag von Wissenslücke » Di Feb 23, 2016 10:24 pm

Hi knoppi, vielen Dank für deine Antwort. Ich hab's jetzt gecheckt.

Gruß

The WL

Antworten