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 : 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;
}
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?