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 :

problemes avec les fonction de string en c++


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2006
    Messages : 6
    Par défaut problemes avec les fonction de string en c++
    bonjour tous le monde
    voila j'ai un programme a etablir en c++ le truc est que le programme saisi 9chiffres et ils ne valident que s'il sont donner de cette maniere ex:111111111 ou 111 111 111 (deux espaces dans exactement ces emplacements) et apres validation ils procedent a des calculs selon cet algo:
    www.cra-arc.gc.ca/eservices/magmedia/sin-f.pdf ,mon probleme est le suivant pour la validation je ne vois pas comment faire si je ne declare pas une variable de type sting afin de faire mes tests mais comment proceder a des calculs selon l'algo alors que ma variable est de type string

    merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    salut magniaco,

    je comprends un peu ton désarroi, mais il va falloir que tu explique ton probleme avec d'avantage de détails si tu veux trouver de l'aide...

    perso, j'ai pas tout compris.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 13
    Par défaut
    Salut,

    Je n'ai pas tout compris non plus, mais à mon avis, il te faudra lire ta chaine de caractères (string) caractère par caractère, pour trouver les espaces.
    Si c'est les calculs sur des string qui te dérange, tu peux les convertir en int.

    Explique mieux ton problème et donne nous ta solution actuelle pour qu'on puisse te donner des réponses plus claires...

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2006
    Messages : 6
    Par défaut
    merci pour votre interet
    je vais vous expliquer un peu mon probleme plus en details des que je rentre chez moi

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2006
    Messages : 37
    Par défaut
    Une source d'inspiration :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
     
    #include <ios>
    #include <iostream>
     
    struct NAS {
     
     signed char data_[9];
     
     
     NAS(
       std::istream & input) {
     
       static signed char const doubles_[] = { 0, 2, 4, 6, 8, 1, 3, 5, 7, 9 };
     
       // Read 3 digits, maybe a space, 3 digits, maybe a space and 3 digits.
       int j(0);
       char window(input.get());
       if(input and std::isdigit(window)) do {
     
           int i(0);
           do {
     
             data_[j*3+i]= window - '0'; // Let suppose '0', '1', ..., '9'.
             ++i;
             window= input.get();
     
           } while(input and std::isdigit(window) and i != 3);
     
           if(i != 3) {
     
             input.setstate(std::ios::badbit);
             throw "Failure";
           }
     
           if(input and window == ' ') { // Maybe use std::isspace.
             window= input.get();
           }
           ++j;
     
         } while(input and std::isdigit(window) and j != 3);
     
       if(j != 3) {
     
         input.setstate(std::ios::badbit);
         throw "Failure";
       }
     
       // See <http://www.cra-arc.gc.ca/eservices/magmedia/sin-f.pdf>.
       if((data_[0] + doubles_[data_[1]]+ data_[2] + doubles_[data_[3]] + data_[4]
          + doubles_[data_[5]] + data_[6] + doubles_[data_[7]] + data_[8]) % 10 != 0) {
     
         throw "Failure";
       }
     }
     
    };   
     
     
    int
    main() {
     
      NAS n(std::cin);
    }

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2006
    Messages : 6
    Par défaut
    Citation Envoyé par N i h i l
    Une source d'inspiration :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
     
    #include <ios>
    #include <iostream>
     
    struct NAS {
     
     signed char data_[9];
     
     
     NAS(
       std::istream & input) {
     
       static signed char const doubles_[] = { 0, 2, 4, 6, 8, 1, 3, 5, 7, 9 };
     
       // Read 3 digits, maybe a space, 3 digits, maybe a space and 3 digits.
       int j(0);
       char window(input.get());
       if(input and std::isdigit(window)) do {
     
           int i(0);
           do {
     
             data_[j*3+i]= window - '0'; // Let suppose '0', '1', ..., '9'.
             ++i;
             window= input.get();
     
           } while(input and std::isdigit(window) and i != 3);
     
           if(i != 3) {
     
             input.setstate(std::ios::badbit);
             throw "Failure";
           }
     
           if(input and window == ' ') { // Maybe use std::isspace.
             window= input.get();
           }
           ++j;
     
         } while(input and std::isdigit(window) and j != 3);
     
       if(j != 3) {
     
         input.setstate(std::ios::badbit);
         throw "Failure";
       }
     
       // See <http://www.cra-arc.gc.ca/eservices/magmedia/sin-f.pdf>.
       if((data_[0] + doubles_[data_[1]]+ data_[2] + doubles_[data_[3]] + data_[4]
          + doubles_[data_[5]] + data_[6] + doubles_[data_[7]] + data_[8]) % 10 != 0) {
     
         throw "Failure";
       }
     }
     
    };   
     
     
    int
    main() {
     
      NAS n(std::cin);
    }

    merci pour ton aide mais je pense que c'est pas mal compliquer pour moi je cherche a resoudre avec des if else et des boucles j'ai pas trop le choix puisque j'ai pas encore vu beaucoup de matiere en c++
    merci quand meme

  7. #7
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Citation Envoyé par violette327
    Je n'ai pas tout compris non plus, mais à mon avis, il te faudra lire ta chaine de caractères (string) caractère par caractère, pour trouver les espaces.
    Si c'est les calculs sur des string qui te dérange, tu peux les convertir en int.

    Explique mieux ton problème et donne nous ta solution actuelle pour qu'on puisse te donner des réponses plus claires...
    Bah. Un std::getline suivit par un erase-remove (-> FAQ) si le test ne fait pas l'affaire, sinon une petite vérif sur le buffer me parait plus simple.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

Discussions similaires

  1. Problemes avec les fonctions
    Par Douly dans le forum Débuter
    Réponses: 5
    Dernier message: 05/01/2010, 17h59
  2. [PHP 5.2] Probleme avec les fonctions fopen fwrite
    Par zeyro dans le forum Langage
    Réponses: 2
    Dernier message: 20/02/2009, 15h34
  3. probleme avec les fonction get et set
    Par Invité dans le forum Flex
    Réponses: 0
    Dernier message: 23/01/2008, 14h44
  4. [Visual C++]probleme avec les fonctions declarées static
    Par sana06 dans le forum Visual C++
    Réponses: 2
    Dernier message: 20/07/2007, 11h21
  5. problème avec les fonctions MidStr et LeftStr
    Par timsah dans le forum C++Builder
    Réponses: 1
    Dernier message: 07/02/2006, 10h07

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