到目前为止,该程序打印所有三元组并告诉您输入的数字是否没有三元组。我需要它在列出所有三元组之后再次打印具有最高值C的三元组。 Example I/O for this project
#include <stdio.h>
void main()
{
int a = 0, b = 0, c = 0, n;
int counter = 0; // counter for # of triples
printf("Please Enter a Positive Integer: \n"); //asks for number
scanf_s("%d", &n); //gets number
for (c = 0; c < n; c++) //for loops counting up to the number
{
for (b = 0; b < c; b++)
{
for (a = 0; a < b; a++)
{
if (a * a + b * b == c * c) //pythag to check if correct
{
printf("%d: \t%d %d %d\n", ++counter, a, b, c); //prints triples in an orderd list
}
else if (n < 6) // if less than 6 - no triples
{
printf("There is no pythagorean triple in this range");
}
}
}
}
getch(); //stops program from closing until you press a keys
}
如果我在15中输入15,它将打印:
3 4 5
6 8 10
5 12 13
所以它打印的最后一个三元组总是具有最高的C值(5 12 13)但是我需要打印一个声明,说特定的三元组具有最高值。
答案 0 :(得分:0)
请尝试这个,我相信你可以改进,它可以工作,但我没时间清理它,所以玩得开心!
#include <stdio.h>
void main( )
{
int a = 0, b = 0, c = 0, n;
int counter = 0; // counter for # of triples
int triple_sum[6];
int sums = 0;
int triple_high_sum = 0;
int triple_high_index = 0;
printf( "Please Enter a Positive Integer: \n" ); //asks for number
scanf( "%d", &n ); //gets number
for ( c = 0; c < n; c++ ) //for loops counting up to the number
{
for ( b = 0; b < c; b++ )
{
for ( a = 0; a < b; a++ )
{
if ( a * a + b * b == c * c ) //pythag to check if correct
{
printf( "%d: \t%d %d %d\n", counter, a, b, c );
//prints triples in an orderd list
triple_sum[counter++] = a + b + c;
}
else if ( n < 6 ) // if less than 6 - no triples
{
printf( "There is no pythagorean triple in this range" );
break;
}
} // endfor
} // endfor
}
sums = --counter;
triple_high_sum = -1;
if ( sums )
while ( sums > -1 )
{
printf( "\ntriple_sum %d == %d", sums, triple_sum[sums] );
if ( triple_sum[sums] > triple_high_sum )
{
triple_high_sum = triple_sum[sums];
triple_high_index = sums;
}
sums--;
} // endwhile
if ( triple_high_sum > -1 )
printf( "\nThe triple index with the largest value is %d",
triple_high_index );
getchar( ); //stops program from closing until you press a keys
}
//stop