Ce Code correspond à l'idée que j'ai exposé précédemment. tu commence par choisir le nombre de chiffre puis tu les choisis un par un. Ensuite, les combinaisons diverses apparaissent. Attention, ce code ne dispose pas d'un anti doublon, ainsi, certaines combinaisons pourront ressembler à (773, 777, 337 si par exemple tu choisis les chiffres 3 et 7)
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <windows.h>
int Nb = 0;
char Chiffre[10];
char ChiffreLu[10];
char *Combinaison[10000];
long exposant(long, long);
int main()
{
printf("Combien de nombres :");
scanf("%d", &Nb);
char c = getchar();
for(int cpta = 0; cpta< Nb; cpta++)
{
printf("\nEntrez le nombre numero %d :",cpta+1);
scanf("%c", &Chiffre[cpta]);
char c = getchar();
}
int position = 0;
for (int cptb = exposant(10,Nb-1); cptb < ((exposant(10,Nb-1))*10) - 1; cptb++)
{
char *Chaine = (char*) malloc(10);
sprintf(Chaine,"%d", cptb);
//Analyse de la chaine
int Concordance = 0;
for (int cptc = 0; cptc < Nb; cptc++)
{
for(int cptd = 0; cptd < Nb; cptd++)
{
if(Chaine[cptd] == Chiffre[cptc])
{
Concordance++;
}
}
}
if(Concordance == Nb)
{
//Combinaison acceptée
Combinaison[position] = (char*) malloc(10);
lstrcpy(Combinaison[position], Chaine);
position++;
printf("\tCombinaison %d : %s", position, Combinaison[position-1]);
}
}
return 0;
}
long exposant(long Base, long e)
{
for (int cpt = 0; cpt < e-1; cpt ++)
{
Base *= 10;
}
return Base;
}
LaPatoshe