0

以下のコードを書きましたが、出力が繰り返されます。3,4,5、4,5,3、5,4,3など。同じトリプレットを示しています。どうすればこれを防ぐことができますか?

#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;

}
4

1 に答える 1

5

これを行うだけです:

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

つまり、このサイクルの開始値を変更します。この方法では、side2>=side1 のトリプレットのみが検出され、タイプ(side1, side2, hyp)のトリプレットとタイプのトリプレットの両方がカウントされることはありません。(side2, side1, hyp)

于 2013-02-27T14:05:28.237 に答える