Sti9nsky Skrevet 7. mars 2007 Del Skrevet 7. mars 2007 Her har jeg prøvd å lage et program som skal teste alle mulighetene ift Pytogoras setning, hvor max lengder på sidene er 500. Programmet funker som bare det, men jeg er usikker på om dette er riktig, siden jeg ikke har noe fasit å sjekke. Sjekker programmet mitt faktisk alle mulighetene fra "sidelengder" = 1 til 500? public class ToTre { // executing main method: public static void main( String args[] ) { // set and initialize integer: int result = 0; int solutions = 0; // loop for side1: for ( int side1 = 1; side1 <= 500; side1++ ) { // loop for side2: for ( int side2 = 1; side2 <= side1; side2++ ) { // loop for hypotenuse: for ( int hypotenuse = 1; hypotenuse <= 500; hypotenuse++ ) { // if side1 if (((side1 * side1) + (side2 * side2) ) == ( hypotenuse * hypotenuse ) ) { result = ((side1 * side1) + (side2 * side2) ); System.out.printf( "\n%d\n", result ); // increment number of solutions: ++solutions; } // end if } // end inner for } // end for } // end outer for // print number of solutions for user: System.out.printf( "\nNumber of solutions are: %d\n", solutions ); } // end main method } // end class ToTre Lenke til kommentar
gunnard Skrevet 7. mars 2007 Del Skrevet 7. mars 2007 Får du lov å anta at hypotenusen er et heltall (som du tydeligvis gjør)? Resultatet ditt er hypotenusen * hypotenusen, så ikke hypotenusen i seg selv. Vet ikke om det er meningen jeg..? Lenke til kommentar
sberg43 Skrevet 7. mars 2007 Del Skrevet 7. mars 2007 Her har jeg prøvd å lage et program som skal teste alle mulighetene ift Pytogoras setning, hvor max lengder på sidene er 500. Programmet funker som bare det, men jeg er usikker på om dette er riktig, siden jeg ikke har noe fasit å sjekke. Sjekker programmet mitt faktisk alle mulighetene fra "sidelengder" = 1 til 500? 8098719[/snapback] Altså for det første så er det uvisst hva du mener med "muligheter". I tillegg så bruker du jo bare int i programmet ditt og hopper effektivt over den uendlige rekken av tall som ligger mellom f.eks. 1 og 2. Sånn sett så er det ikke mulig å beregne alle muligheter (man ville vel strengt tatt brukt den matematiske operatøren for uendelig). Skulle vi likevel begrense hos til at man kan øke sidene med 1 om gangen (diskret mattematikk passer jo bra for datamaskiner) ser jeg at du har et merkelig forhold mellom side1 og side2. Du looper side 1 fra 1 til 500, og man ville trodde at du kanskje ønsket å gjøre det for side2 også men du har en begresning der og vil ikke la side2 være støre enn side1, noe den naturligvis kunne være i "virkeligheten". F.eks en trekant med en katet hvor lengden på side1 er 10 og lengden på side2 er 500. Lenke til kommentar
gunnard Skrevet 7. mars 2007 Del Skrevet 7. mars 2007 Du looper side 1 fra 1 til 500, og man ville trodde at du kanskje ønsket å gjøre det for side2 også men du har en begresning der og vil ikke la side2 være støre enn side1, noe den naturligvis kunne være i "virkeligheten". F.eks en trekant med en katet hvor lengden på side1 er 10 og lengden på side2 er 500. 8100105[/snapback] Dersom det er samme hva som er side1 og side2, vil han jo med dette unngå å få side1=10 og side2=500 som en løsning og side2=500 og side2=10 som en annen løsning. Men det er ikke sikkert er det samme for han - spørs problemstillingen. Lenke til kommentar
Sti9nsky Skrevet 8. mars 2007 Forfatter Del Skrevet 8. mars 2007 Ooops. Så det selv. Nei jeg tenkte å sjekke alle mulighetene, side 2 skal ikke ha begrensinger slik jeg har skrevet... Skal endre det litt. Lenke til kommentar
Sti9nsky Skrevet 14. mars 2007 Forfatter Del Skrevet 14. mars 2007 (endret) Få endringer... men den fungerer bedre nå. Alt jeg trengte var å fjerne en brace ( "{" ) eller to... Klikk for å se/fjerne innholdet nedenfor public class ToTre { // executing main method: public static void main( String args[] ) { // set and initialize integer: int result = 0; int solutions = 0; // loop for side1: for ( int side1 = 1; side1 <= 500; side1++ ) { // loop for side2: for ( int side2 = 1; side2 <= 500; side2++ ) // loop for hypotenuse: for ( int hypotenuse = 1; hypotenuse <= 500; hypotenuse++ ) { // if side1² + side2² = hypotenuse² ... if (((side1 * side1) + (side2 * side2) ) == ( hypotenuse * hypotenuse ) ) { // ... then calculate: result = ( hypotenuse * hypotenuse ); // display each result if "if" = true: System.out.printf( "\n%d\n", result ); } // end if // increment number of solutions: ++solutions; } // end inner for } // end outer for // print number of solutions for user: System.out.printf( "\nNumber of solutions are: %d\n", solutions ); } // end main method } // end class ToTre ...og alle sidene skal ha 500 som begrensing. Ja, heltall gjorde det lettere. Endret 14. mars 2007 av Sti9nsky Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå