Boucles imbriquées de nombre variable
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.
Code:
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;
} |
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?