Calcul des combinaisons des chaines de caracteres

boualiasma Messages postés 393 Date d'inscription lundi 22 juin 2009 Statut Membre Dernière intervention 23 décembre 2011 - 9 août 2009 à 15:03
boualiasma Messages postés 393 Date d'inscription lundi 22 juin 2009 Statut Membre Dernière intervention 23 décembre 2011 - 17 août 2009 à 09:59
Bonsoir,

J'ai un fichier texte "exemple.txt" qui contient dans chaque une seule chaine de caractère(attribut). On sait en avance le nombre d'attribut.
Prenez un exemple de ce fichier contenant 5 attributs:
nom, prenom, age, adresse, emploi

Voici le fichier exemple.txt :
nom
prenom
age
adresse
emploi

Je voudrais par un programme C de sauvegarder dans un autre fichier "resultat.txt" toutes les combinaisons possibles de ces différents attributs. c'est à dire toutes les combinaisons possibles :
- de taille 1: les combinaisons des attributs de taille 1 parmi 5.
Donc on a 5 combinaisons:
nom, prenom, age, adresse, emploi

- de taille 2:les combinaisons des attributs de taille 2 parmi 5.
Donc on a 10 combinaisons:
nom prenom, nom age, nom adresse, nom emploi, prenom age, prenom adresse, prenom emploi, age adresse, age emploi, adresse emploi

- de taille 3:les combinaisons des attributs de taille 3 parmi 5.
Donc on a 10 combinaisons:
nom prenom age, nom prenom adresse, nom prenom emploi, nom age adresse, nom age emploi, nom adresse emploi, prenom age adresse, prenom age emploi, prenom adresse emploi, age adresse emploi

- de taille 4:les combinaisons des attributs de taille 4 parmi 5.
Donc on a 5 combinaisons:
nom prenom age adresse, nom prenom age emploi, nom prenom adresse emploi, prenom age adresse emploi


- de taille 5:les combinaisons des attributs de taille 5 parmi 5.
Donc on a 1 combinaison:
nom prenom age adresse emploi

Je pense à stocker le résultat dans un autre fichier.
Voici le fichier resultat.txt :
nom
prenom
age
adresse
emploi
nom prenom
nom age
nom adresse
nom emploi
prenom age
prenom adresse
prenom emploi
age adresse
age emploi
adresse emploi
nom prenom age
nom prenom adresse
nom prenom emploi
nom age adresse
nom age emploi
nom adresse emploi
prenom age adresse
prenom age emploi
prenom adresse emploi
age adresse emploi
nom prenom age adresse
nom prenom age emploi
nom prenom adresse emploi
prenom age adresse emploi
nom prenom age adresse emploi

Je trouvé une difficulté de calculer ces combinaisons et par la suite les sauvegarde. Je serais très content pour vos aides.

Merci.

3 réponses

cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
9 août 2009 à 15:35
Exemple pour 3 attributs, tu pourras adapter :

char *Attributes[]={"1","2","3","4","5"};
for(int i1=0;i1<4;i1++)
   for(int i2=i1+1;i2<4;i2++)
      for(int i3=i2+1;i3<4;i3++)
         fprintf(file,"%s %s %s\n",Attributes[i1],Attributes[i2],Attributes[i3]);


Ca marche tant que le nombre d'attributs est connu à l'avance, ce qui est ton cas, mais sinon il faut utiliser une autre méthode (y avait un code ou un snippet là-dessus il me semble).
0
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
9 août 2009 à 15:36
Oh c'était évidemment i1<5 et de même pour les autres.
En fait, même mieux, i1<3, i2<4, i3<5.
0
boualiasma Messages postés 393 Date d'inscription lundi 22 juin 2009 Statut Membre Dernière intervention 23 décembre 2011 5
17 août 2009 à 09:59
Bonjour,
J'ai un fichier texte "exemple.txt" qui contient dans chaque une seule chaine de caractère(attribut). On sait en avance le nombre d'attribut.
Prenez un exemple de ce fichier contenant 5 attributs:
nom, prenom, age, adresse, emploi

Voici le fichier exemple.txt :
nom
prenom
age
adresse
emploi

Je voudrais par un programme C de sauvegarder dans un autre fichier "resultat.txt" toutes les combinaisons possibles de ces différents N attributs Mais à partir de taille 2 jusqu'à la teille N. c'est à dire toutes les combinaisons possibles :

nom prenom
nom age
nom adresse
nom emploi
prenom age
prenom adresse
prenom emploi
age adresse
age emploi
adresse emploi
nom prenom age
nom prenom adresse
nom prenom emploi
nom age adresse
nom age emploi
nom adresse emploi
prenom age adresse
prenom age emploi
prenom adresse emploi
age adresse emploi
nom prenom age adresse
nom prenom age emploi
nom prenom adresse emploi
prenom age adresse emploi
nom prenom age adresse emploi

Sachant que le nombre N n'est pas connu en avance. Quel est le programme qui permet de calcuer cette combinaison ?

Merci.
0
Rejoignez-nous