2013-02-27 1 views
0

J'ai écrit le code ci-dessous mais cela donne une sortie répétée. Tels que 3,4,5 et 4,5,3 et 5,4,3. Il montre le même triplet. Comment puis-je empêcher cela?Comment filtrer les triplets récurrents de ce code triplet de Pythagore?

#include <stdio.h> 

int main(void){ 

int side1=1; 
int side2=1; 
int hypotenus=1; 
int till; 
int count=0; 

printf("Till what number do you want to find triplets?"); 
scanf("%d",&till); 

for(side1=1;side1<=till;side1++){ 

    for(side2=1;side2<=till;side2++){ 

     for(hypotenus=1;hypotenus<=till;hypotenus++){ 

      if(hypotenus*hypotenus==side1*side1+side2*side2){ 

       count++; 
       printf("%5d %5d %5d is a triple \n",side1,side2,hypotenus); 
      } 
     } 

    } 

} 
printf("\n"); 
printf("%d triplets found.",count); 
return 0; 

} 
+0

Je serais surpris de voir ce programme produire "4,5,3 et 5,4,3 "en tant que sorties. La valeur de 'hypotenus' ne pourrait pas être plus petite que' side' ou 'side2'. –

+0

Vous avez raison, je leur ai juste donné comme exemple. Il donne seulement 3 4 5 et 4 3 5. Pas le troisième – Lyrk

Répondre

5

Il suffit de faire ceci:

for(side2=side1;side2<=till;side2++){ 

i.e. changer la valeur de début de ce cycle. De cette façon, vous ne trouverez que des triplets où side2> = side1 et ne comptera jamais à la fois un triplet du type (side1, side2, hyp) et un triplet du type (side2, side1, hyp)

+0

Merci solution intelligente – Lyrk

Questions connexes