begin process at 2012 05 29 07:42:32
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Maths & Algorithmes

 > 

liste des n-uplets d'un ensemble a nb element


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

liste des n-uplets d'un ensemble a nb element

vendredi 17 mars 2006 à 12:26:38 | liste des n-uplets d'un ensemble a nb element

alussk

Membre Club
voila mon probleme: soit E un ensemble et card(E)=nb; mon programme doit calculer la liste de toutes les combinaisons possibles a n elements j'avais pensé faire ca avec un rand() donc g redefini RAND_MAX mais ca ne passe pas (le rand me sort des valeurs dans ce genre :s 41184676334265001916915724) donc j'aimerais savoir si quelqu'un connait un myen plus systematique (et plus fiable) de calculer les n-uplets d'un ensemble NB: j'ai chercher sur google, mais vu mon niveau en math la plupart des sites mon embrouillé
vendredi 17 mars 2006 à 12:51:05 | Re : liste des n-uplets d'un ensemble a nb element

alussk

Membre Club
oops j'aurais ptet du parcourir le forum avant... enfin bref maintenant g un autre probleme j'ai coder cette fonction: void six_uplet_alphB(char *chaine){ int i,c,j,k,l,m,n; char alphab[26]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o', 'p','q','r','s','t','u','v','w','x','y','z'}; FILE *Fchaine; if((Fchaine=fopen("C:\\Documents and Settings\\Administrateur\\Bureau\\ssk,log.txt","w+"))==NULL){ printf("ERREUR D'OUVERTURE DU FICHIER DE SAUVEGARDE"); } for(i=0;i<26;i++){ for(j=i+1;j<26;j++){ for(k=j+1;k<26;k++){ for(l=k+1;l<26;l++){ for(m=l+1;m<26;m++){ for(n=m+1;n<26;n++){ chaine[0]=alphab[i]; chaine[1]=alphab[j]; chaine[2]=alphab[k]; chaine[3]=alphab[l]; chaine[4]=alphab[m]; chaine[5]=alphab[n]; for(c=0;c<6;c++); fprintf(Fchaine,"%c",chaine[c]); fprintf(Fchaine,"\n"); } } } } } } } mais rien ne s'affiche dans le fichier... je vois pas trop pourquoi, donc plz help
samedi 18 mars 2006 à 01:27:28 | Re : liste des n-uplets d'un ensemble a nb element

Guillemouze

heu la tu genere pas tous les combinaisons, mais seulement celles dont les lettres qui precedent sont inferieurs a celles qui suivent. si tu les veu toutes, tu peu faire:

void six_uplet_alphB(char *chaine){
     int i,c,j,k,l,m,n;
      FILE *Fchaine;
      Fchaine = fopen("C:\\Documents and Settings\\Administrateur\\Bureau\\ssk,log.txt","w+");
      if(Fchaine == NULL){
        printf("ERREUR D'OUVERTURE DU FICHIER DE SAUVEGARDE");
        return;
       }
       for(i=0;i<26;i++){
         chaine[0]=(char)(i+67); //i+67 doit etre le code ASCII de ta lettre          
         for(j=0;j<26;j++){
           chaine[1]=(char)(j+67); // il me semble que 67 est le code de "a"
           for(k=0;k<26;k++){
             chaine[2]=(char)(k+67);//si c pas le cas, remplace 67 par le bon code
             for(l=0;l<26;l++){
               chaine[3]=(char)(l+67);
               for(m=0;m<26;m++){
                 chaine[4]=(char)(m+67);
                 for(n=0;n<26;n++){
                   chaine[5]=(char)(n+67);
                   fprintf(Fchaine,"%s\n",chaine);
               }
            }
         }
      }
    }
  }  
}

samedi 18 mars 2006 à 01:28:35 | Re : liste des n-uplets d'un ensemble a nb element

Guillemouze

heuuuu oublie pas de declarer

char chaine[5];

aussi
samedi 18 mars 2006 à 01:28:59 | Re : liste des n-uplets d'un ensemble a nb element

Guillemouze

char chaine[6]
pardon
samedi 18 mars 2006 à 02:16:05 | Re : liste des n-uplets d'un ensemble a nb element

alussk

Membre Club
Je vois le principe, j'avais déja corrigé (et oublié que j'avais posté xD) et ca donnait ca: for(i=0;i<26;i++){ for(j=0;j<26;j++){ for(k=0;k<26;k++){ for(l=0;l<26;l++){ for(m=0;m<26;m++){ for(n=0;n<26;n++){ chaine[0]=alphab[i]; chaine[1]=alphab[j]; chaine[2]=alphab[k]; chaine[3]=alphab[l]; chaine[4]=alphab[m]; chaine[5]=alphab[n]; chaine[6]='\0'; } } } } } } franchement je serais tenté de dire que ca revient au meme, mais vu que j'ai pa pu tester.. ca ma donner un .txt de 600Mo(bizarre?) qui m'a planté le notepad... donc vala si ce n'est pas la meme, ou tout simplement si c'est moins bien dis le moi
samedi 18 mars 2006 à 02:26:28 | Re : liste des n-uplets d'un ensemble a nb element

Guillemouze

Réponse acceptée !
c peut etre normal. tu a 266 possibilites, soit 308.915.776
si tu multiplie par le nombre de caracteres pour chaque possiblilites (6 lettres + 1 retour) = 2.162.410.432 caracteres
si ton caracter fait 1 octet, ca fait 2.162.410.432 octets, soit 2.111.728 Ko,  2.062 Mo, 2Go,
donc c bizar ton fichier est un petit peu petit, si jme trompe pas !!!


A part ca , il vaut mieux que tu remplace
chaine[X] = alphab[Y]
par
chaine[X] = (char) (67 + Y)
et que tu fasse cette affectation juste apres la boucle
for (Y=0; Y<26;Y++)
pour minimiser le nombre doperations
samedi 18 mars 2006 à 02:40:11 | Re : liste des n-uplets d'un ensemble a nb element

Guillemouze

ce que je te conseille c de faire un arbre
dans le genre

typedef struct {
    char lettre;
    Noeud *fils[26];
} Noeud;

Noeud* racine;

racine = rempliArbre(' ', 6);

Noeud* rempliArbre(char val, int prof);
    if (prof == 0) return NULL;
    Noeud* tmp = malloc(sizeof(Noeud));
    tmp->lettre = val;
    for (i=0;i<26;i++) {
       tmp->fils[i] = rempliArbre((char)(67+i), prof-1);
    }
    return tmp;
}


et pour lister, t'a plus qu'a parcourir l'arbre
samedi 18 mars 2006 à 03:11:53 | Re : liste des n-uplets d'un ensemble a nb element

alussk

Membre Club
ouaou, je connais pas encore les structures mais bon on dira que c'est le moment de s'y mettre, par contre je te demanderai juste une derniere info, avec ta methode on le parcous comment l'arbre?
samedi 18 mars 2006 à 04:55:01 | Re : liste des n-uplets d'un ensemble a nb element

Guillemouze

bah si tu veu afficher toutes les possibilites a l'ecran, tu fai

char buffer[7];
buffer[6] = 0;
void afficher(Noeud* noeud, char *buffer, int prof) {
    if (prof == 0) printf("%s\n", buffer);
    else {
       buffer[5-prof] = noeud->lettre;
       for (i=0;i<26;i++) afficher(noeud->fils[i], buffer, prof-1);
    }
}

a quelques choses pret ca doit etre un druc dans ce genre.

mais l'utilisation d'un arbre depend aussi des traitement que tu veu en faire apres. peut etre que c'est pas utile!!!



Cette discussion est classée dans : liste, rand, nb, ensemble, uplets


Répondre à ce message

Sujets en rapport avec ce message

URGENT : transposer du C en Caml [ par torgal79 ] Salut Voila mon probleme. On m'a filé un prog en c et j'y connais rien a ce langage. Et mon boulot est de le transposer en caml et c'est super urgent. rand() ca marche pas!!! [ par Arnaud16022 ] hello je voudrais savoir pourquoi ce prog donne toujours la meme liste de resultats:#include #include int main(){ for (int a=0;a!=10;a++){ Classe - Liste Chainees [ par snoozriton ] Bonjour à tous, je me retrouve bloqué et je ne vois pas trop comment me décoincer. Il s'agit d'un exercice à faire. Dans cet exercice nous avons des E Nb Aléatoire sans rand() [ par badboy38 ] Bonjour,je viens de "feuilleter" le forum à la recherche de la perle rare, mais..... enfin, voila mon problème: je dois générer un nombre aléatoire en pb liste [ par mat74 ] salut a ts ,j'ai essayer de faire une fonction avec des liste en param et sa marche pas .int nb_element_liste (std::list liste_teste,std::list it_test aide sur les concensus [ par torgal79 ] salut voila je suis tres novice en langage c et je dois comprendre un code portant sur la methode des concensus.Mais le probleme c'est que mes bases le flag undo dans un edit [ par julienbj ] J'ai un petit souci avec les undo et redo dans un richedit. J'aimerais pouvoir désactiver certaines actions de la liste des undo. Je m'explique, je su VC++ .Net - liste chainee [ par slim01 ] bonjour, dans un exercice je dois creer une liste chainée d'une classe (acteurs) les classes que j'ai créé sont les suivantes : liste - element - a Probleme de taille d'une liste chainee static qui varie ... [ par rick_moins_moins ] Bonjour,j'ai besoin de faire  une liste chainee dans mon programme afin de cataloguer tous les objets de mon projet. Pour cela ma liste chainee est st Liste chainée en C++ [ par toitoine01 ] Bonjour ds le cadre de ma formation je doit réalisée un projet gestion d'une université j'utilise pour cela une liste chainée pour gerer les enseignan


Nos sponsors


Sondage...

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 : 0,655 sec (3)

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