A voir également:
- Algorithme combinaison k parmi n
- Tableau de combinaison loto 5/90 - Forum Excel
- 1,9 k vues ✓ - Forum Instagram
- Algorithme euromillion excel gratuit - Forum Excel
- 1 million en k€ ✓ - Forum Bureautique
- Rendre un montant en Millions d'Euro ✓ - Forum Excel
9 réponses
Salut
je cherche un programme c ou c++ ou pascal ou basic ou n'inporte quels langage informatique qui permet de resoudre le probleme suivante:
je cherhe les combinaisons des X entiers a base de N
le programme doit me demander de:
* définir X (de type entier )
*saisir le x elements
* définir N (de type entier)
et affiche:
*les nombres des combinaisons possibles
*surtout affichée les différentes combinaisons possibles de X entier a base de N
exemple:
si X=3 ( 1 ; 3 ; 5 )
N=3
le programme affiche:
111 113 131 115 151 133 155 135 153
333 331 313 335 353 311 355 315 351
555 551 515 553 535 511 533 513 531
27 combinaisons
remarques:
*les combinaisons possibles peuvent contenir avec les combinaisons dont lequel il y a tout les X éléments d'autre combinaisons dont lequel on répète le même entier 2 fois ou 3 fois jusqu'à N fois.
* étant donner que la solution et un peut délicat dans le cas général (si il y a une solution dans le cas général avec X et N saisis au clavier sinon on fixe X=3 et je laisse N saisie au clavier et je cherche la solution de ce problème)
si quelqu'un pouvez me aider merci d'avance.
je cherche un programme c ou c++ ou pascal ou basic ou n'inporte quels langage informatique qui permet de resoudre le probleme suivante:
je cherhe les combinaisons des X entiers a base de N
le programme doit me demander de:
* définir X (de type entier )
*saisir le x elements
* définir N (de type entier)
et affiche:
*les nombres des combinaisons possibles
*surtout affichée les différentes combinaisons possibles de X entier a base de N
exemple:
si X=3 ( 1 ; 3 ; 5 )
N=3
le programme affiche:
111 113 131 115 151 133 155 135 153
333 331 313 335 353 311 355 315 351
555 551 515 553 535 511 533 513 531
27 combinaisons
remarques:
*les combinaisons possibles peuvent contenir avec les combinaisons dont lequel il y a tout les X éléments d'autre combinaisons dont lequel on répète le même entier 2 fois ou 3 fois jusqu'à N fois.
* étant donner que la solution et un peut délicat dans le cas général (si il y a une solution dans le cas général avec X et N saisis au clavier sinon on fixe X=3 et je laisse N saisie au clavier et je cherche la solution de ce problème)
si quelqu'un pouvez me aider merci d'avance.
je te propose un code qui devrait résoudre ton problème (la mise en forme ne ressemble peut-être pas exactement à ce que tu souhaites faire, mais ce sera facile de l'adapter). Il affiche des p-listes de n éléments où p et n sont quelconques. Bon courage.
Sinon, un algo récursif s'appelle lui-même (exemple factorielle) et admet une séquence de fin. Il n'est pas nécessaire d'utiliser la récursivité pour écrire le programme qui t'intéresse.
#include <stdio.h> // scanf et printf
#include <math.h> // pow
#include <stdlib.h> // malloc et free
int main()
{
long int *tab; // vecteur contenant les éléments à combiner
long int **liste; // matrice destinée à contenir les combinaisons
long int i,j; // indices de boucle
long int n = 3; // nombre d'éléments de tab
long int p = 3; // nombre d'éléments à combiner
char touche; // ne sert que pour la mise au point
// Allocation dynamique de tab
tab = (long int *) malloc(n*sizeof(long int));
// Allocation dynamique de liste
liste = (long int **) malloc((long int ) pow((double )n, (double )p)* sizeof(long int *));
for (i=0;i<(long int ) pow((double )n, (double )p);i++)
{
liste[i] = (long int *) malloc(p*sizeof(long int));
}
// Initialisation de tab
for (i=0;i<n;i++)
{
tab[i] = i + 1;
}
// Remplissage de la liste
for (i=0;i<(long int ) pow((double )n, (double )p);i++)
{
for (j=0;j<p;j++)
{
liste[i][j] = tab[(i/(long int )pow((double )n,(double )(p-(j+1))))%n];
printf("%ld\t",liste[i][j]);
}
printf("\n");
}
// Libération de tab
free(tab);
// libération de liste
for (i=0;i<(long int ) pow(n,p);i++)
{
free(liste[i]);
}
free(liste);
// Fin du programme
printf("Appuyez sur une touche pour continuer...");
scanf("%c",&touche);
return 0;
}