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. 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