Schnelle objektorientierte, kompilierende Programmiersprache.
-
Wissenslücke
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
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
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