RENVERSER une chaine de caractere quelconque

Résolu
cyberice67 Messages postés 88 Date d'inscription samedi 6 décembre 2003 Statut Membre Dernière intervention 7 novembre 2016 - 7 déc. 2004 à 20:11
cs_6co Messages postés 114 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 5 avril 2012 - 8 déc. 2004 à 00:16
Salut tlm,

Z'ai un ch'tit gros soucis en C++, en fait je cherche a renverser une chaine de caractère quelconque (string, int etc) mais je connais pas les fonction C++ permettant de tester le type d'une chaine de caractère saisie.
En fait mon appli doit utiliser de préférence le polymorphisme. J'ai une fonction qui renvoie un caractère designant le type de chaine saisie :
ex : renvoie E si c'est un entier,
renvoie R si c'est un réel ... etc

ensuite selon la réponse je stocke la chaine dans une classe et j'inverse la saisie, par exemple :
Si je saisi ETOILE ca doit me renvoyer ELIOTE,
si je saisi 2.0 ca doit renvoyé 0.2 etc...

J'vous ai mis une esquise du prog pour voir un peu comment c'est articulé...
TH'X d'avance à ceux qui voudrons bien cogité :)

http://sebbest.free.fr/appli.zip

Cyberice

3 réponses

cs_6co Messages postés 114 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 5 avril 2012 1
8 déc. 2004 à 00:16
je pense que de toute façon, le meilleur moyen est de traiter toutes les entrer comme des char*, non... comment le programme peut-il savoir le type de données qui va être saisi..?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
char str[50];
char str2[50];
int longueur;
scanf("%s",str);
longueur=strlen(str);

for (int i=0; i<longueur; i++)
str2[i]=str[longueur-i-1];
str2[longueur]=0;
printf("%s", str2); // affichage chaîne inversée

// ensuite test sur str2 -> traitement du type atoi, etc (selon caractères rencontrés)
}
3
darkkinj Messages postés 18 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 12 mars 2005
7 déc. 2004 à 23:23
Pour ce qui est d'une fonction qui renverraie enfait le nom de la classe je sais pas. Je sais que ce genre de fonctions existe en Java mais en C++ je ne sais toujours pas.

Par contre je ne vois pas en quoi tu peut avoir besoin de connaitre le type de chaine pour faire le renverser, si tu manipules simplement un void* tu n'a juste qu'à intervertir les cases du tableau par contre tu auras besoin de passer la longeur de ton tableau en paramètre également.

J'aurai plustôt vu que tu cast tout en char* avant de le passer dans la fonction de renversement.

En espéran avoir pu t'aider ;)
darkkinj
0
plus_plus_fab Messages postés 232 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 8 janvier 2005
8 déc. 2004 à 00:10
"J'aurai plustôt vu que tu cast tout en char* avant de le passer dans la fonction de renversement."
ça ne fonctionnera pas, on ne caste comme ça en char* !

ce code devrait t'indiquer comment faire :

#include <string>
#include
#include
#include <sstream>
using namespace std;
int main(int argc,char** argv)
{
string s("ETOILE");
reverse(s.begin(),s.end());
cout << s << endl;

double i = 0.2;
ostringstream ost;
ost << i;
string s2 = ost.str();
reverse(s2.begin(),s2.end());
cout << s2 << endl;

return 0;
}
0
Rejoignez-nous