Ist dein Code wirklich so formatiert?! Wenn ja dann ist es kein wunder wenn du nciht mehr durch blickst.
Muss jetzt gleich leider zur Arbeit, werd mich der Sache heute Nacht mal annehmen.
Hallo zusammen.
Mittlerweile sieht mein Programmcode so aus:
Und ich habe immernoch keinen blassen Schimmer was ich falsch mache.Code:#include <stdio.h> #include <math.h> main() { int a[3]={}, b[3]={}, c[3]={}, i=0, n, A=0; printf("Wie viele solche Dreiecke soll das Programm suchen? "); scanf("%d", &n); start:; do{ /* }while(i!=n); */ i++; do{ /* }while((a[0]*b[0])/2!=A && (a[1]*b[1])/2!=A && (a[2]*b[2])/2!=A); */ A++; do{ /* }while(b[0]<A); */ b[0]=b[0]+1; a[0]=0; do{ /* }while(b[0]>a[0]); */ a[0]=a[0]+1; if((a[0]*b[0])/2==A) { b[1]=b[1]+1; a[1]=0; do{ /* }while(b[1]>a[1]); */ a[1]=a[1]+1; if((a[1]*b[1])/2==A) { b[2]=b[2]+1; a[2]=0; do{ /* }while(b[2]>a[2]); */ a[2]=a[2]+1; if((a[2]*b[2])/2==A) { goto ausgabe; } }while(b[2]>a[2]); } }while(b[1]>a[1]); } }while(b[0]>a[0]); ausgabe:; if((a[0]*b[0])/2==A && (a[1]*b[1])/2==A && (a[2]*b[2])/2==A) { c[0]=sqrt(pow(a[0],2)+pow(b[0],2)); c[1]=sqrt(pow(a[1],2)+pow(b[1],2)); c[2]=sqrt(pow(a[2],2)+pow(b[2],2)); if((int)a[0]==a[0] && (int)a[1]==a[1] && (int)a[2]==a[2] && (int)b[0]==b[0] && (int)b[1]==b[1] && (int)b[2]==b[2] && (int)c[0]==c[0] && (int)c[1]==c[1] && (int)c[2]==c[2]) { printf("\n\n--%d-------------", i); printf("\nFlaeche: %d", A); printf("\nDreieck1 (%d, %d, %d)", a[0], b[0], c[0]); printf("\nDreieck1 (%d, %d, %d)", a[1], b[1], c[1]); printf("\nDreieck1 (%d, %d, %d)", a[2], b[2], c[2]); } } else { goto start; } }while(b[0]<A); }while((a[0]*b[0])/2!=A && (a[1]*b[1])/2!=A && (a[2]*b[2])/2!=A); }while(i!=n); getch(); }
Bitte um hilfreiche Tipps was den Quellcode angeht. Bin wie gesagt noch ziehmlich frisch in Sachen C.
Vielen Dank![]()
Ist dein Code wirklich so formatiert?! Wenn ja dann ist es kein wunder wenn du nciht mehr durch blickst.
Muss jetzt gleich leider zur Arbeit, werd mich der Sache heute Nacht mal annehmen.
Nein so ist es nicht formatiert es hätte sonst hier noch ekelhafter ausgesehen. Vielen Dank dass du mal drauf schaust![]()
So, hab jetzt mal was programmiert.
Ich denke es ist alles nachvollziehbar...
Das Programm ermittelt ganzzahlige Hypothenusen zu Kathetenlängen von 1 - 200, ist die Hypothenuse ganzzahlig wird geprüft ob die Fläche auch ganzzahlig ist, wenn ja wird alles ausgegeben.
Die Beispiele aus der Aufgabe kommen jedenfalls drin vor.
Jetzt muss nur noch zu Paaren sortiert werden...
Hoffe ich habe da keinen Denkfehler drin, bin grad etwas müde.
Code:float fhypo=0; int ihypo=0; float fflaeche=0; int iflaeche=0; int ix=1; int iy=1; while(ix<201) { while(iy<201) { fhypo = sqrt((float)(ix*ix)+(iy*iy)); //hypothenuse errechnen ihypo = (int)fhypo; if((fhypo-ihypo) == 0) //prüfen ob hypothenuse eine ganzzahl ist { fflaeche = (float)(ix * iy / 2); //fläche errechnen iflaeche = (int)fflaeche; if((fflaeche-iflaeche) == 0) //prüfen ob fläche eine ganzzahl ist { printf("%d\t%d\t%d\t%d\n", ix, iy, ihypo, iflaeche); } } iy++; } iy=1; ix++; }
Hey vielen Dank die richtigen Werte finden sich dort wieder. Gibt es eine C Funktion mit der man Werte nach Größe sortiert bzw nur den größten Wert übernimmt? Dann könnte man doch die Werte in Arrays abspeichern und vergleichen oder? Wo kommen den die ganzen anderen Werte her? Da stehen z.B. mehrere Werte für iy, ihypo und iflaeche bei ix=15. Liegt das an den Bedingungen?
Das liegt daran das es viel mehr Dreiecke mit ganzzahligen Katheten, Hypothenuse und Fläche gibt, ind einer Aufgabe werden aber nur die berücksichtigt, von denen es mindestens drei zu einer Fläche gibt.Wo kommen den die ganzen anderen Werte her? Da stehen z.B. mehrere Werte für iy, ihypo und iflaeche bei ix=15. Liegt das an den Bedingungen?
Aso ok hast du eine Idee wie man dir mit dem gleichen Flächeninhalt rausfiltern kann? Würde die Werte in Arrays schreiben und vergleichen. Aber wie soll man das genau umsetzen?
Naja das in das Array schreiben ist doch kein Ding, und dann stumpf das Array jedesmal komplett durchlaufen und die selben raussuchen.
Nicht besoinders schick, aber fürn Anfang...
Was wäre denn schicker?![]()
Du bist nicht wirklich n Tüfftler oder?!
Was hättest du für ne Idee das Problem zu lösen?
Lesezeichen