C :: Aufgabe #53

2 Lösungen Lösungen öffentlich

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)

Lösungen:

vote_ok
von devnull (8870 Punkte) - 06.09.2014 um 22:04 Uhr
Quellcode ausblenden C-Code
/***********************************
 * 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;
}
vote_ok
von kathleenw (3600 Punkte) - 09.07.2020 um 10:46 Uhr
Quellcode ausblenden C-Code
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;
}