Code de Gray sans nuances

Messages postés
147
Date d'inscription
samedi 1 août 2009
Statut
Membre
Dernière intervention
5 novembre 2019
- - Dernière réponse : cptpingu
Messages postés
3801
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
15 novembre 2019
- 25 nov. 2016 à 10:43
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/101684-code-de-gray-sans-nuances

cptpingu
Messages postés
3801
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
15 novembre 2019
90 -
Message "admin", à supprimer:

Bonjour ccgousset. Peux-tu mettre à jour ta source au plus vite ? Ça fait déjà quelques jours qu'une source érronée fait la "une" de la section C++. Ça ne fait pas très sérieux pour CodeS-SourceS. Je serais malheureusement obligé de la désactiver d'ici 24h si aucune correction n'est apportée.

Merci de ta compréhension.
ccgousset
Messages postés
147
Date d'inscription
samedi 1 août 2009
Statut
Membre
Dernière intervention
5 novembre 2019
> cptpingu
Messages postés
3801
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
15 novembre 2019
-
Bonjour Pingu , que dois je faire le source est annulé bien sur. Je dois remettre un bon code ou un patch avec les votres ? Merci
cptpingu
Messages postés
3801
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
15 novembre 2019
90 > ccgousset
Messages postés
147
Date d'inscription
samedi 1 août 2009
Statut
Membre
Dernière intervention
5 novembre 2019
-
Je vais simplement la réactiver pour que tu puisses y apporter des modifications.
pgl10
Messages postés
310
Date d'inscription
samedi 18 décembre 2004
Statut
Membre
Dernière intervention
6 juillet 2019
1 -
Bonjour,

En plus, je vous propose aussi la fonction inverse :

uint64_t gray_to_bin(uint64_t k)
{
  uint64_t d, n = k, b = 1;
  do {
    d = n >> b;
    n = n ^ d;
    b = b << 1;    
  } while(d > 1);
  return n;
}

Bien à vous !
pgl10
Messages postés
310
Date d'inscription
samedi 18 décembre 2004
Statut
Membre
Dernière intervention
6 juillet 2019
1 -
Bonjour tous,

Merci ccgousset et cptpingu.

Pour tous ceux qui ont des petits ennuis avec l'affichage des caractères accentués en mode console sous Windows, je rappelle ici qu'il suffit d'ajouter le code suivant :

#include <windows.h>
#include <string>
std::string print(const std::string tab)
{
    char* buf = new char[1+tab.size()];
    CharToOemA(tab.c_str(), buf);
    std::string str(buf);
    delete [] buf;
    return str;
}

et de remplacer ensuite, par exemple, l'instruction :

  std::cout << "Génération du code de Gray, nombre de rang: ";

par celle-ci :

  std::cout << print("Génération du code de Gray, nombre de rang: ");

Cela fonctionne aussi pour afficher un char[] ou un std::string

Salutations