RENVERSER une chaine de caractere quelconque [Résolu]

cyberice67 87 Messages postés samedi 6 décembre 2003Date d'inscription 7 novembre 2016 Dernière intervention - 7 déc. 2004 à 20:11 - Dernière réponse : cs_6co 114 Messages postés lundi 27 janvier 2003Date d'inscription 5 avril 2012 Dernière intervention
- 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
Afficher la suite 

3 réponses

Répondre au sujet
cs_6co 114 Messages postés lundi 27 janvier 2003Date d'inscription 5 avril 2012 Dernière intervention - 8 déc. 2004 à 00:16
+3
Utile
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)
}
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_6co
darkkinj 18 Messages postés samedi 6 novembre 2004Date d'inscription 12 mars 2005 Dernière intervention - 7 déc. 2004 à 23:23
0
Utile
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
Commenter la réponse de darkkinj
plus_plus_fab 232 Messages postés vendredi 9 janvier 2004Date d'inscription 8 janvier 2005 Dernière intervention - 8 déc. 2004 à 00:10
0
Utile
"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;
}
Commenter la réponse de plus_plus_fab

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.