Caractères dissocès en C++ ?

azerty0 Messages postés 1270 Date d'inscription   Statut Membre Dernière intervention   -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Bon voila, je cherche a créer un programme qui me transformerait une chaîne de caractère en une autre.
en gros, un caractère attribué a chaque caractère.

Genre, je tape "ae", cela maffiche "43" les attribus peuvent donc être caractères ou numériques.

Le problème, cest pas le programe en lui même, cest faire en sorte que le programme me lise les caractères entrés dans cin un par un, et les traduise un par un...

Jespère que vous saurez maider.

Azerty
Configuration: Windows XP
Firefox 2.0.0.8

2 réponses

  1. Marc
     
    Bonjour,

    En admettant que tu ai une fonction traduireCaractere() :

    char chaine [50]; // declaration de la saisie
    cin >> chaine; // saisie

    // pour chaque caractere de la saisie
    for (int i=0;chaine[i]!='\0';i++)
    // on affiche la traduction
    cout<<traduireCaractere(chaine[i]);

    En espèrant t'avoir aidé,
    bonne journée
    0
  2. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 943
     
    Marc je pense que tu ne réponds pas vraiment à la question :

    Le problème, cest pas le programe en lui même, cest faire en sorte que le programme me lise les caractères entrés dans cin un par un, et les traduise un par un...


    Personnellement je ne sais pas trop comment faire car quand tu lis sur std::cin il attend à cahque fois un retour chariot pour interpréter la saisie, je ne sais pas le faire à la volée :s

    Voici un exemple de code pour le reste de l'énoncé :
    #include <iostream>
    #include <string>
    #include <sstream>
    #include <map>
    
    typedef std::map<char,char> traducteur_t;
    
    void init_traducteur(traducteur_t & traducteur){
        traducteur['a'] = '4';
        traducteur['e'] = '3';
    }
    
    char traduire(const traducteur_t & traducteur,char c){
        traducteur_t::const_iterator fit = traducteur.find(c);
        if (fit == traducteur.end()) return '?'; // caractère inconnu
        return fit->second;
    }
    
    std::string traduire(const traducteur_t & traducteur,const std::string & s){
        const std::size_t len = s.length();
        std::ostringstream oss;
        for(std::size_t i=0;i<len;++i) oss << traduire(traducteur,s[i]);
        return oss.str();
    }
    
    int main(){
        traducteur_t traducteur;
        init_traducteur(traducteur);
    
        std::string saisie;
        std::cout << "texte ?" << std::endl;
        std::cin >> saisie;
        std::cout << traduire(traducteur,saisie) << std::endl;
    
        return 0;
    }
    

    ce qui donne :
    texte ?
    aeeeaaaeezzaeea
    433344433??4334

    Bonne chance
    0