Caractères dissocès en C++ ?

Fermé
azerty0 Messages postés 1268 Date d'inscription samedi 27 octobre 2007 Statut Membre Dernière intervention 5 septembre 2013 - 28 oct. 2007 à 02:23
mamiemando Messages postés 32283 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 mars 2023 - 28 oct. 2007 à 14:35
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

2 réponses

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
mamiemando Messages postés 32283 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 17 mars 2023 7 572
28 oct. 2007 à 14:35
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