begin process at 2012 05 28 11:02:27
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Maths & Algorithmes

 > 

aide pour combinaison


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

aide pour combinaison

lundi 14 novembre 2005 à 15:12:22 | aide pour combinaison

kritical

salut tout le monde j'aimerais bien si on peut m'aide a résoudre ce probléme: je voudrais lister toutes le combinaisons possibles de n entiers à saisir(en C++) exp:pour 3 entier {7,3,4}: 734 374 743 437 473 347 merci d'avance.
lundi 14 novembre 2005 à 19:02:19 | Re : aide pour combinaison

yoyo269

Membre Club
Il suffit de se débrouiller avec qq boucles (while et/ou for).
Ya rien de vraiment sorcier, faut réfléchir un peu.

YOYO, @+.
YOYO
lundi 14 novembre 2005 à 23:13:29 | Re : aide pour combinaison

LaPatoshe

Tu peux effectuer une boucle for allant pour trois chiffres de 100 à 999, puis transformer chacune des valeur en chaine de caractère, étudier chacun de ces caractères pour connaitre s'ils sont équivalents aux chiffres recherchés, auquel cas, tu garde le nombre formé par ces chiffres. Tu créées en parallèle une routine pour  éliminer les combinaisons contenant deux fois le même chiffre (ex 773, 337)

LaPatoshe
lundi 14 novembre 2005 à 23:36:47 | Re : aide pour combinaison

Hylvenir

Salut,
en C++, tu peux utiliser next_permutation sur ton tableau triée.
Pour une question de cours, tu peux faire tous les chemins possible en passant par tous les points dans graphe complet, les valeurs de ton tableau étant les noeuds de ton graphe ;)


Ma participation à la saturation du net:
http://hylvenir.free.fr
mardi 15 novembre 2005 à 00:14:56 | Re : aide pour combinaison

LaPatoshe

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

mardi 15 novembre 2005 à 12:59:47 | merci mais

kritical

merci mais j'ai juste besoin d'afficher pour 3 nombres les 6 combinaisons: exp pour 3:{1,2,3}: 123 132 231 213 321 312 comment on fait un anti doublon?
mardi 15 novembre 2005 à 14:40:09 | Re : aide pour combinaison

Joky

Membre Club
#include <stdio.h>
#include <stdlib.h>

#define ARRAY_SIZE(x) sizeof(x) / sizeof(x[0])

void Permutation(int *Tab, int Size)
{
    int *Entier = (int*)malloc(Size);   //On alloue un tableau de la même taille que Tab
   
    //Le premier élément est le dernier de Tab
    Entier[0] = Tab[Size-1];
   
    //On remplie le tableau Entier avec les prédécesseur de Tab
    for(int i=1; i<Size; i++)
        Entier[i] = Tab[i-1];

    //Et on change les valeur de Tab
    for(int j=0; j<Size; j++)
        Tab[j] = Entier[j];

    //On libère la mémoire allouée
    free(Entier);
}

//Calcul de la factorielle pour savoir combien de combinaison possible
int Factorielle(int n)
{
    if(n == 2)   //Si n = 2, alors on retourne 2 car inutile d'aller plus loin
        return 2;
    else   //Sinon
        return n*Factorielle(n-1);   //On retourne n*Factorielle(n-1)
}

int main()

   int TabEntier[3] = {1,2,3};
   int Count = 0, i=0, Two=1;
  
    //Tant que Count est inférieur à la moitié des possibilités
   while(Count < (Factorielle(3)/2))
   {
        if(Two == 2)   //Si on est passé 2 fois par la boucle
        {
             //On fait une permutation Circulaire à droite du tableau
            Permutation(TabEntier, ARRAY_SIZE(TabEntier));
            Two = 1;   //Et on réinitialise
        }

       //On affiche les valeurs
        printf("%i%i%i\n", TabEntier[0], TabEntier[1], TabEntier[2]);
        printf("%i%i%i\n", TabEntier[0], TabEntier[2], TabEntier[1]);

       //Et on incrémente
        Two++;
        Count++;
   }

   system("pause");
}

Vala pour moi c'est la solution lol :)

if(!Meilleur("Joky")) return ERREUR;

mardi 15 novembre 2005 à 15:46:28 | Re : aide pour combinaison

ekinox17

Ouah et ben moi qui voulait me lancer dans ce problemes car il paraisser plutot difficile ... glups et toi tu l'as fait comment sa et bien moi je dit chapeau monsieur...
mardi 15 novembre 2005 à 16:06:55 | mais

kritical

mais je veux le faire pour n entiers(<10) à saisir un par un
mardi 15 novembre 2005 à 17:24:45 | Re : aide pour combinaison

chris91

exactement le même post le 08/11... peut-être le même cours en alternance :) http://www.cppfrance.com/forum.v2.aspx?ID=595741

1 2

Cette discussion est classée dans : aide, combinaison


Répondre à ce message

Sujets en rapport avec ce message

Aide pour mega debutant [ par C++ ] Salut, bon alors je vien d ouvrir c++ mais comment mettre un code sur un boutton ???par exemple ce code comment je doits le mettre sur un bouton :int Hors programmation... [ par NitRic ] Seulement une petite suggestion: Il serait bien d'indiquer dans les message(demande d'aide) quel compilateur on utilise... Pourquoi je dit ca:Allez vo AIDE: CHERCHE TUTORIEL SUR LES FONCTIONS GRAPHIQUES [ par Mmuller57 ] je CHERCHE un TUTORIEL sur LES FONCTIONS GRAPHIQUES en C++(tracer une ligne, un cercle, un carrée, un rectangle, un polygone et le tout en C++ !). Je URGENCE : AIDE [ par Nouch ] Comment executer un fichier .exe en c++merci les gars form1.show en c++ [ par C++ ] Avec vb form1.show : ça ouvre une autre formeavec c++ c'est quoi ?compilateur VC++ 6 messagebox avec le texte qu il y dans idc_edit1 [ par vb7 ] salut, je veux afficher un messagebox avec le texte qu il y dans idc_edit1 svp aidez moi!!!!!!!!!!!!!


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 5,117 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales