Hey Leute,
im Studium lernen wir momentan C. Jedoch habe ich immer desöfteren Fehler gehabt, obwohl mein Code laut Logik 100% laufen müsste.
Habe lange gebraucht um dies herauszufinden, woran es liegt.
Hier ein Beispiel (Aufgabe):
Hier mein Code dazu:
So wie es hier steht funktioniert das Programm. Kommentiert man jedoch die oben genannte Zeile "i = 0;" aus, dann kommt als Anzahl der Dreiecke eine unrealistische Zahl heraus...
Jetzt frage ich mich, woher er die Intialisierungszahl für i bei "int i;" herbekommt und warum man zwingend i auf 0 setzen muss.
Viele Grüße,
Michael
im Studium lernen wir momentan C. Jedoch habe ich immer desöfteren Fehler gehabt, obwohl mein Code laut Logik 100% laufen müsste.
Habe lange gebraucht um dies herauszufinden, woran es liegt.
Hier ein Beispiel (Aufgabe):
Ganzzahlige rechtwinklige Dreiecke
Es gibt rechtwinklige Dreiecke (d.h. Dreiecke für die der Satz des Pythagoras gilt), deren Seitenlängen alle ganze Zah-
len sind.
•Schreiben Sie ein Programm, das alle diese Dreiecke in Form der Längen ihrer drei Seiten findet
und diese drei Seitenlängen für jedes gefundene Dreieck ausgibt. Hierbei sollen nur Seitenlängen, die nicht größer als 500
sind, berücksichtigt werden.
•Geben Sie zusätzlich die Anzahl der gefundenen Dreiecke aus.
•Hinweis: Nutzen Sie drei geschachtelte for-Schleifen, die alle Möglichkeiten durchprobieren. Diese Vorge-hensweise ist ein Beispiel für eine sogenannte "Brute Force"-Methode.
Hier mein Code dazu:
C-Quellcode
- #include <stdio.h>
- int main(void)
- {
- system("cls");
- printf_s("Berechnung von rechtwinkligen Dreiecken bis a,b,c <= 500!\n");
- printf_s("\n");
- printf_s("Zum Starten Taste druecken...");
- getch();
- system("cls");
- const int MAX_SEITE = 500;
- int a,b,c,i;
- i = 0; //Auskommentieren für Fehlfunktion
- for(a = 1; a <= MAX_SEITE ; a++)
- {
- for(b = 1; b <= MAX_SEITE ; b++)
- {
- for(c = 1; c <= MAX_SEITE ; c++)
- {
- if((c*c) == (a*a) + (b*b))
- {
- printf_s("Seitenl\x84ngen: a = %d; b = %d, c = %d;\n",a,b,c);
- i++;
- }
- }
- }
- }
- printf_s("\n");
- printf_s("%d Dreiecke gefunden!\n",i);
- getch();
- return 0;
- }
So wie es hier steht funktioniert das Programm. Kommentiert man jedoch die oben genannte Zeile "i = 0;" aus, dann kommt als Anzahl der Dreiecke eine unrealistische Zahl heraus...
Jetzt frage ich mich, woher er die Intialisierungszahl für i bei "int i;" herbekommt und warum man zwingend i auf 0 setzen muss.
Viele Grüße,
Michael