chaine de caractere

chaine de caractere - C++ - Programmation

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.

Reply

Marsh Posté le 08-09-2003 à 21:06:04   

Reply

Marsh Posté le 08-09-2003 à 21:08:33    

toi t'es mort si taz passe par la :D
 
C++ et string = std::string et pas char *
 
pour ton pb c plus compliqué que ca

Reply

Marsh Posté le 08-09-2003 à 21:12:28    

On apprend alors que veut tu de mieu lol.
 

Reply

Marsh Posté le 08-09-2003 à 21:20:56    

kikoo

Reply

Marsh Posté le 08-09-2003 à 21:23:50    

zouzouille a écrit :

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.


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.

Reply

Marsh Posté le 08-09-2003 à 21:32:35    

[:taz]

Reply

Marsh Posté le 08-09-2003 à 22:23:11    

ho, 3 (ex ? polo  :hello: )jemellois ici  :whistle:


---------------
.
Reply

Marsh Posté le 09-09-2003 à 07:29:54    

Didier1809 a écrit :

ho, 3 (ex ? polo  :hello: )jemellois ici  :whistle:  


C'est quel langue ça? :heink:

Reply

Marsh 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


---------------
Le Tyran
Reply

Marsh Posté le 09-09-2003 à 10:22:03    

hmmm et aussi ecrire un interpreteur d'expression arithmetique.
 :whistle:  
 
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.

Reply

Marsh Posté le 09-09-2003 à 10:22:03   

Reply

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

Reply

Marsh Posté le 09-09-2003 à 10:31:04    

Joel F a écrit :

hmmm et aussi ecrire un interpreteur d'expression arithmetique.
 :whistle:  
 
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.


 
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 :D


Message édité par LetoII le 09-09-2003 à 10:35:58

---------------
Le Tyran
Reply

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;  
  }  
 

Reply

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

Reply

Marsh Posté le 09-09-2003 à 11:10:27    

un truc du style
 

Code :
  1. string sArg = argv[2];
  2. string::size_type pos = (string::size_type)-1;
  3. if ((pos = sArg.find("*", 0)) != (string::size_type)-1) {
  4. int iOp1 = atoi(sArg.substr(0, pos).c_str());
  5. int iOp2 = atoi(sArg.substr(pos, pos+strlen("*" )).c_str());
  6. int iResult = iOp1 * iOp2;
  7. cout << "Result = " << iResult << endl;
  8. }


 
ou un sscanf sur le sArg.substr suivant si atoi dispo ou pas.


Message édité par VisualC++ le 09-09-2003 à 11:12:09
Reply

Marsh Posté le 09-09-2003 à 11:31:11    

Plutôt un truc comme ça:

Code :
  1. #include <string>
  2. #include <sstream>
  3. using namespace std;
  4. int main(int argc,char** argv)
  5. {
  6.    if(argc >=3)
  7.    {
  8.       stringstream op1(string(argv[1]),stringstream::in);
  9.       stringstream op2(string(argv[2]),stringstream::in);
  10.       int i,j;
  11.       op1 >> i;
  12.       op2 >> j;
  13.       stringstream result(stringstream::out|stringstream::in);
  14.       result << i*j;
  15.       cout << result.str() << endl;
  16.    }
  17.    return 0;
  18. }


 
Edit: oublié le return  :whistle:


Message édité par LetoII le 09-09-2003 à 11:34:44

---------------
Le Tyran
Reply

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 ;)

Reply

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.

Reply

Marsh Posté le 09-09-2003 à 14:15:58    

Taz a écrit :

Merci Letto, juste 2 trucs:
 - stringstream( ..., ...::in) -> istringstream
 - return 0 facultatif


 
Moi c LetoII et pa Letto  :whistle: (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 :D
 

Taz a écrit :


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.


 
 :lol:  [:grinking]


---------------
Le Tyran
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed