Bonjour!
Je suis en train de développer un programme qui trouve les n-uplets tel que la somme des éléments compris entre 1 et m soit égale à un nombre s et tel que chaque élément du n-uplet est différent des autres. Par exemple, si l'utilisateur spécifie s=15, m=9 et n=3, le programme retournera les triplets (1,5,9), (1,6,8), (2,4,9), (2,5,8), (2,6,7), (3,4,8),(3,5,7) et (4,5,6). J'ai commencé à écrire un code pour trouver des triplets (pour n = 3) qui satisfont la consigne.
Celui-ci fonctionne. Maintenant, je dois généraliser pour un nombre n de variables i1, i2, ... , in mais je sais plus ou moins comment m'y prendre. Il y aura n boucles imbriquées. Y a-t-il une façon simple, élégante de le faire?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 #include <stdio.h> void TrouverTuplets(int m, int s) { printf("Entrer le nombre d'entiers à utiliser et la somme du triplet : "); scanf("%d%d", &m, &s); int i; int j; int k; for (i = 1; i <= m; i++){ for (j = i+1; j <= m; j++){ for (k = j+1; k <= m; k++){ int numero=1; if (i + j + k == s) { printf("Triplet no. %d: ( %d, %d, %d) \n", numero, i, j, k); numero ++; } } } } } int main() { int m; int s; TrouverTuplets(m, s); getchar(); return 0; }
Partager