art_dupond je suis neuneu... oui oui !! | ca marche chez moi (win98 + builder5)
marche pas à l'école (windows 2000 + builder5)
si quelqu'un sait pourquoi...
(c'est une pitite fct recursive qui, quand on rentre 'n' affiche toutes les permutations de 0 -> n-1)
Code :
- #include <vcl.h>
- #include <iostream.h>
- #include <string.h>
- /*
- fonction permutation:
-
- Pour chaque lettre, la garder en memoire et permuter la suite.
- On s'arrête lorsqu'il n'y a plus qu'un lettre.
- */
- void permutation(string memorisage, string reste)
- {
- if (reste.size() == 1)
- {
- cout << memorisage << reste << "\n";
- }
- else
- {
- for (char *position = reste.begin() ; position < reste.end() ; position++)
- {
- char lettre = *position;
- reste.erase(position);
- permutation(memorisage + lettre, reste);
- reste.insert(position, lettre);
- }
- }
- }
- main()
- {
- int attendre;
- int n;
- char z;
- string mot="";
- cin >> n;
- for(int i=0;i<n;i++)
- {
- z=char(i+48); // pour transformer char(i) en i ; char i
- mot += z;
- }
- permutation("", mot); // appel de la fonction récursive
- cin >> attendre; // pour avoir le temps de voir le résultat
- }
|
---------------
oui oui
|