C :: Aufgabe #53
2 Lösungen
Bedingtes Tripel (Mathematisches Problem)
Anfänger - C
von bibir
- 03.09.2014 um 09:15 Uhr
Ein Tripel besteht aus 3 integer-Werten, die in diesem Fall sollen noch folgende Eigenschaften erfüllt werden:
a < b < c
a² + b² = c²
a + b +c = n (n ist der Übergabeparameter)
Erstelle ein Programm, das eine beliegibe ganze Zahl als Übergabeparameter einliest und die dazugehörigen Tripel ausgibt
Beispiele:
n=30 => (5/12/13)
n=252 => (36/105/111), (56/90/106), (63/84/105)
a < b < c
a² + b² = c²
a + b +c = n (n ist der Übergabeparameter)
Erstelle ein Programm, das eine beliegibe ganze Zahl als Übergabeparameter einliest und die dazugehörigen Tripel ausgibt
Beispiele:
n=30 => (5/12/13)
n=252 => (36/105/111), (56/90/106), (63/84/105)
Lösungen:
/***********************************
* tripel.c bedingtes Tripel
***********************************/
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char **argv) {
int N, a, b ,c;
if (argc > 1)
N = atoi(argv[1]);
else {
printf("Eingabe Zahl: ");
scanf("%d", &N);
}
for (a=1; a<N; a++) {
for (b=a+1; b<N; b++) {
c = N - a - b;
if (c <= b)
break;
if (a*a + b*b != c*c)
continue;
printf("(%d/%d/%d)\n", a, b, c);
}
}
return 0;
}
int main(void)
{
int a,b,c,n,gefunden;
gefunden = 0;
printf("\nBitte gebe n ein. Das Programm berechnet dann alle Tripel.\n");
scanf("%d", &n);
fflush(stdin);
printf("\n***Lösung***\n");
for (a=1; a<=n; a++) {
for (b=2; b<=n; b++) {
c = n - a - b;
if (c==sqrt((a*a)+(b*b))) {
if (a<b && b<c && a<c) {
printf("n=%d => (%d/%d/%d)\n",n,a,b,c);
gefunden++;
}
}
}
}
if (gefunden == 0)
printf("Für die Zahl %d gibt es keine Tripel.\n\n", n);
else
printf("Diese Zahl hat %d Tripel.\n\n", gefunden);
return EXIT_SUCCESS;
}
