chaine de caractere - C++ - Programmation
Marsh Posté le 08-09-2003 à 21:08:33
toi t'es mort si taz passe par la
C++ et string = std::string et pas char *
pour ton pb c plus compliqué que ca
Marsh Posté le 08-09-2003 à 21:23:50
zouzouille a écrit : Quand je rentre dans un string 3+2 |
etant donné que tu apprends et qu'on ne recherche dans ton cas ni la perfection, ni le bon gout mais plutot la manipulation de tableaux de caractères je suppose, oui c'est comme ca que tu dois faire.
Marsh Posté le 09-09-2003 à 07:29:54
ReplyMarsh Posté le 09-09-2003 à 10:05:43
Si j'ai bien compris tu veux avoir une chaîne du style "5" avec comme point de départ 3+2, si c ça regarde du côté de sstream et de string
Marsh Posté le 09-09-2003 à 10:22:03
hmmm et aussi ecrire un interpreteur d'expression arithmetique.
Faut construire un arbre binaire a partie de l'expression, effectuez une conersion '5' => 5 et reconstruire via des foncteurs les opérations : '+' => func_plus.
Marsh Posté le 09-09-2003 à 10:27:20
LetoII a écrit : Si j'ai bien compris tu veux avoir une chaîne du style "5" avec comme point de départ 3+2, si c ça regarde du côté de sstream et de string |
stringstream
Marsh Posté le 09-09-2003 à 10:31:04
Joel F a écrit : hmmm et aussi ecrire un interpreteur d'expression arithmetique. |
Ben non, il a des int à la base, enfin c ce que j'ai compris
Taz a écrit : stringstream |
Heu nan je confirme que la bibliothéque s'appelle sstream, après effectivement l'objet désiré s'appel stringstream
Marsh Posté le 09-09-2003 à 10:56:09
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <iostream.h>
int main(int argc ,char *argv[],char *envp[])
{
char temp[10];
char *nb1;
char *nb2;
int nbr1,nbr2,tot;
nbr1=0;
nbr2=0;
tot=0;
if (argc < 2)
{
cout << "Il n'y a pas asser de parametre" << endl;
return -1;
}
if (strcmp(argv[1], "2" ) == 0)
{
strcpy(temp,argv[2]);
for (int i=0;temp[i]!='0';i++)
{
if (temp[i]=='*')
{
nb1 = &(temp[i-1]);
nbr1=atoi(nb1);
nb2 = &(temp[i+1]);
nbr2=atoi(nb2);
tot=nbr1*nbr2;
cout << tot << endl;
}
}
}
else
{
cout << "Numero correspond pas(1 ou 2 ou 3)" << endl;
}
return 0;
}
Marsh Posté le 09-09-2003 à 10:56:40
Quelqu'un pourrais me dire comment faire pour plus de 1 caractere??? Avec string sa va pas
Marsh Posté le 09-09-2003 à 11:10:27
un truc du style
Code :
|
ou un sscanf sur le sArg.substr suivant si atoi dispo ou pas.
Marsh Posté le 09-09-2003 à 11:31:11
Plutôt un truc comme ça:
Code :
|
Edit: oublié le return
Marsh Posté le 09-09-2003 à 11:45:07
Oui mais moi c t juste pour son bout de code qui ne gerait pas les +1 char
Marsh Posté le 09-09-2003 à 14:04:40
Merci Letto, juste 2 trucs:
- stringstream( ..., ...::in) -> istringstream
- return 0 facultatif
VC, je veux plus te voir ici avec tes réponses à la noix. Vas faire du C ailleurs parce que j'assimile ça à du pourrissage de sujet.
zouzouille > ton code tu peux l'effacer toi-même, mais vu comme il est mauvais, c'est une bonne technique de guerre que de laisser pomer par les autres.
Marsh Posté le 09-09-2003 à 14:15:58
Taz a écrit : Merci Letto, juste 2 trucs: |
Moi c LetoII et pa Letto (t'inquiéte j'ai l'habitude on me l'écorche tout le temps ce nickname )
Perso moi quand j'ai une fonction qui renvoie un int, j'aime bien qu'il y ai un return qq part mais bon c une histoire de goût
Taz a écrit : |
Marsh Posté le 08-09-2003 à 21:06:04
Quand je rentre dans un string 3+2
j'aimerai qu'il en fasse l'addition mais comme c'est un string il ne sait pas.Faut il que je le mette dans un tableau (strcpy) puis parcourir mon tableau??? quelqu'un pourrait il m'aider.