IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

[c++] probleme avec une chaine string


Sujet :

C++

  1. #1
    Membre du Club
    Inscrit en
    Mars 2010
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 90
    Points : 60
    Points
    60
    Par défaut [c++] probleme avec une chaine string
    bonjour,

    voila , j une chaine de caratère composé de caractère et d'entier ce que j veux faire c'est de mulitiplier tous mes entiers par 0.5 le problème ce que la valeur de retour c'est une valeur décimal .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    string chaine="a2v3c4";
    	int j=0 ;
    double k=0.0;
     
    	int i ;
    	for (i=1;i<chaine.size();i=i+2)
    	{
     
    		k=chaine[i]*0,5 ;
     
    	}
    avec cet exemple j'obtiens a l'exécution pour la case 2 par exemple 25

    c'est quoi la solution ??

    et merci d'avance

  2. #2
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 426
    Points : 827
    Points
    827
    Par défaut
    Salut,

    Essaye déjà ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    string chaine="a2v3c4";
         int j=0 ;
         double k=0.0;
     
         int i ;
         for (i=1;i<chaine.size();i+=2)
         {
              k=(double)chaine[i]*0.5 ;
         }
    1)Il faut convertir le 'chaine[i]' en double sinon la multiplication te renvoie un int
    2)Il faut utiliser un '.' comme séparateur décimal : '0.5' et pas 0,5'
    3)Te rends tu compte que la valeur de k est écrasée chaque fois
    4)Si le nombre de caractères de ta 'string' est impaire tu risque d'aller chercher un caractère au delà de la fin de celle-ci : vérifie avant de commencer la boucle que la 'chaine.size()' est bien paire
    5) Dans ton exemple si tu veux que k = 2*0.5 pour le deuxième caractère, il faut écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    k = (double)( chaine[i] - (int)'0') * 0.5;

  3. #3
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Sur le 0,5 vs. 0.5

    Ce code :
    Fait les choses suivantes:

    1/ déclaration d'un symbole i de type int
    2/ évaluation de 0 (ne vait rien en soi)
    3/ évaluation de 5 (ne fait rien en soi)
    4/ affectation de i avec la dernière expression évaluée

    Du coup, i = 5.

    En C et en C++, la virgule est un séparateur d'expressions. Un idiome classique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (foobar(x,y,z) < 0) perror("foobar"), exit(ERROR_CODE);
    On trouve la virgule en tant que séparateurs de paramètres, ainsi que pour séparer les deux expressions perror(..) et exit(..). Ce code permet de mettre plsueirs expressions sur une ligne, et donc de ne pas avoir besoin de créer un bloc { ... } pour quelque chose d'aussi simple (en termes de maintenance, il est toujours préférable de créer un bloc).
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Retrouver Variable avec une chaine String
    Par jojo86 dans le forum Langage
    Réponses: 6
    Dernier message: 06/05/2012, 10h17
  2. probleme avec une chaine de caractére
    Par nebilabd dans le forum C
    Réponses: 9
    Dernier message: 24/12/2010, 18h29
  3. Probleme avec une chaine
    Par youyouta dans le forum Langage
    Réponses: 19
    Dernier message: 01/04/2008, 23h23
  4. Probleme avec une chaine STRING !!!
    Par Bebert71 dans le forum C++
    Réponses: 10
    Dernier message: 09/05/2006, 09h29
  5. Probleme avec une chaine de caractere
    Par Jim_Nastiq dans le forum Langage
    Réponses: 2
    Dernier message: 07/04/2006, 09h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo