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 :

Débutant : décomposer chaque membre d'un integer


Sujet :

C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 66
    Par défaut Débutant : décomposer chaque membre d'un integer
    Bonjour,
    J'aimerais bien savoir si je peux décomposer chaque nombre d'un integer comme je peux le faire avec une variable de type string en utilisant.length et une for loop ou si non, y a t-il un autre moyen?
    Merci d'aider un débutant qui ne demande qu'à apprendre.
    ggcourtois

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Par défaut
    Bonjour,
    Si je me rappelle bien tu as une fonction IntToStr(Variable) qui te permet de mettre ton integer en string. Je ne sais pas par contre si elle est applicable sur tous compilateurs...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 66
    Par défaut
    Merci Beaucoup,
    Je vais essayer,
    ggcourtois

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 66
    Par défaut
    Je n'arrive pas à trouver cette fonction.
    J'utilise Visual studio, je rentre Inttostr(variable)
    mais lorsque j'utilise le raccourci ctrl+space, il ne trouve pas cette fonction,
    Merci,
    ggcourtois

  5. #5
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    IntToStr c'est du Borland.

    Pour convertir un entier en chaîne tout est décrit dans la FAQ C++.

    Mais si tu veux récupérer tes digits sous forme d'entier et non de caractères, tu n'es pas obligé de passer par une chaîne.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 66
    Par défaut
    Je suis allé dans la partie conversion mais je trouve pas,
    si quelqun pourrais m'indiquer precisement comment faire,
    Merci,
    ggcourtois

  7. #7
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    T'as pas dû consulter la bonne FAQ

    http://c.developpez.com/faq/cpp/?pag...RINGS_numtostr

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 66
    Par défaut
    Bonjour voici mon code :

    Le main

    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
    #include "function.h"
    
    
    using namespace std;
    
    //creation of variables
    string inputencryption;
    int number;
    
    
    int main()
    {
    	
    	std::ostringstream oss;
    	/*cin >> inputencryption;
    	encrypt(inputencryption);*/
       
    	cin << number;
    	oss << number;
    	std::string inputdecryption = oss.str();//convertis number en string 
    	decrypt(inputdecryption);	
    	
        // récupérer une chaîne de caractères
    	system("PAUSE");
    
    }
    Normalement la partie en orange devrais convertir le integer input de l'utilisateur en string et ensuite envoyer ce string dans la fonction
    decryption?
    Merci de m'aider,
    ggcourtois

  9. #9
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    C'est ça.

    A part le cin << number qui devrait être cin >> number.

    Mais ça ne sert à rien si tu récupères ton nombre depuis l'entrée standard, il n'y a qu'à lire directement une chaîne ; c'est d'ailleurs ce que tu faisais avec le code que tu as mis en commentaire.

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 66
    Par défaut
    Le main marche bien:
    il convertit bien le number en string.
    Maintenant j'ai un problème dans mon function.cpp

    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
    void decrypt(string sentencein)
    {
    	
    	int length = sentencein.length();//checks the length of sentencein variable
    	string *boardde = new string[length];//creates a pointer board the size of the sentencin.length
    	int error = 0;
    	
    	
    	
    	for(int b=0;b<length;b++)//clears the board ;sets all its lines to a null value
    	{
    		boardde[b]= "" ;
    	}
    
    
    	
    	for(int i=0;i<length;i++)
    	{
    		
    		
    		
    		
    	
    		switch(sentencein[i]){
    			
    			case "1":
    				boardde[i] = "a" ;
    				break;		
    		default :
    				cout << sentencein[i] << " is an illegal sign , please type your sentence again" << endl;		
    				error = 1;
    				break;
    		}
    	}
    	if(error==1) 
    	{	
    		cout << "Error ; enter sentence again :" << endl;	
    	}
    	else{
    	for(int c=0;c<length;c++){
    			cout << boardde[c];
    			
    		}
    
    	}
    }
    A la ligne en orange ils disent : "case expression not constant";
    Puis-je fixer cette erreur?
    Et mon code semble-t-il bon?
    L'idée est que si la premiere lettre du string est un 1 je rajoute un "a" au boardde.
    MErci,
    ggcourtois

  11. #11
    Membre émérite

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 634
    Par défaut
    Tu ne peux pas tester des chaînes de caractères dans un switch (http://c.developpez.com/faq/cpp/?pag...GS_switch_case)

    Et ici si tu regardes bien l'opérateur [] de la classe string retourne un char. Donc tu peux tester ton caractères comme ceci :

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 66
    Par défaut
    Merci,
    J'ai resolu ce problème; mais maintenant je me retrouve confronté à un autre problème; cette fois-ci dans le
    main :

    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
    #include "function.h"
    
    
    using namespace std;
    
    //creation of variables
    string inputencryption;
    int number;
    
    
    int main()
    {
    	
    	//std::ostringstream oss;
    	//*cin >> inputencryption;
    	//encrypt(inputencryption);*/
     //  
    	
    	
    	//std::string inputdecryption = oss.str();//convertis number en string 
    
    	
        std::ostringstream oss(number);
    	oss << number;
        cin >> number;
        std::string result = oss.str();
    	decrypt(result);
    	
        
    	system("PAUSE");
    
    }
    L'erreur est en orange et le debuggeur indique :

    .\main.cpp(27) : error C2664: 'decrypt' : cannot convert parameter 1 from 'std::string' to 'int'
    Y-a t-il un moyen de fixer ce bug?
    Merci,
    ggcourtois

  13. #13
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Avant de poster, tu devrais peut-être prendre 1 minute pour lire le message d'erreur, tenter de le comprendre, et vérifier ton code en conséquence. Si à chaque message d'erreur tu viens nous demander de corriger ton code, tu ne vas pas aller bien loin.

    Ici ce n'est pas dur, tu passes un int là où on attend un std::string, ou l'inverse.

    Donc l'un des morceaux de code que tu nous as montré n'est pas le bon, puisque je n'y vois aucun int dans l'appel ou la déclaration de la fonction decrypt.

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 66
    Par défaut
    Citation Envoyé par Laurent Gomila
    Avant de poster, tu devrais peut-être prendre 1 minute pour lire le message d'erreur, tenter de le comprendre, et vérifier ton code en conséquence. Si à chaque message d'erreur tu viens nous demander de corriger ton code, tu ne vas pas aller bien loin.

    Ici ce n'est pas dur, tu passes un int là où on attend un std::string, ou l'inverse.

    Donc l'un des morceaux de code que tu nous as montré n'est pas le bon, puisque je n'y vois aucun int dans l'appel ou la déclaration de la fonction decrypt.
    Désolé mais je ne suis pas du genre flemmard.
    Par contre, ce que je peux t'affirmer c'est que je suis un débutant et que les préjugés ne vont pas beaucoup m'avancer.

    Je me suis penché sur le problème et je vais y reflechir encore plus longuement
    Merci,
    ggcourtois

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 66
    Par défaut
    J'ai réglé le problème et en effet c'était un problème dans ma function protoype dans mon header file,
    Merci de votre aide à tous,
    ggcourtois

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 66
    Par défaut
    Bonjour,
    j'ai cherché pendant quelques heures mais je n'ai pas réussi à trouver
    il s'agit d'une erreur dans le function.cpp
    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
    
    	
    void decrypt(string sentencein)
    {
    	
    	int length = sentencein.length();//checks the length of sentencein variable
    	string *boardde = new string[length];//creates a pointer board the size of the sentencin.length
    	int error = 0;
    	char number =' ';
    	int l = 0;
    
    	
    	
    	
    	
    	
    	for(int b=0;b<length;b++)//clears the board ;sets all its lines to a null value
    	{
    		boardde[b]= ' ' ;
    	}
    
    
    	
    	for(int i=0;i<length;i++)
    	{
    		
    		for(int e=0;e<l+4;e++)
    		{
    		 number = number + sentencein[l] ;
    		 
    		}
    		
    		l+=3;
    		
    		
    	
    		switch(number){
    			
    			case '100' : // Ne lis-t-il que le 1 du début?
    				boardde[i] = "a" ;
    				break;		
    		default :
    				cout << number << " is an illegal sign , please type your sentence again" << endl;		
    				error = 1;
    				break;
    		}
    	}
    Lorsque je tape 100;
    le 'a' ne saffiche pas et je n'ai pas le temps de lire le output même avec un system("PAUSE");
    Peut-être le case ne lit-t-il que le premier character parmi les trois?
    Devrais-je essayer de faire trois cases, chacun analysant les characters de 1 à 3?
    merci de votre aide,
    gg

  17. #17
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Par défaut
    Bonsoir,
    Dis-Moi le "a" ce ne serait pas 'a' plutot?

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 66
    Par défaut
    J'ai changé le "a" en 'a' mais cela ne marche toujours pas;
    enfin le code s'execute mais lorsque je tape 100
    il n'ya pas le a qui s'affiche;
    Merci et bonsoir,
    ggcourtois

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

Discussions similaires

  1. [Débutant(e)]Convertir un string en integer
    Par BernardT dans le forum Langage
    Réponses: 8
    Dernier message: 20/07/2010, 14h40
  2. [Débutante] erreur: invalid input syntax for integer
    Par naru40001 dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 29/08/2008, 11h43
  3. créer un espace personnel pour chaque membre
    Par loady dans le forum Langage
    Réponses: 1
    Dernier message: 26/07/2006, 12h54
  4. Réponses: 3
    Dernier message: 24/05/2006, 21h45

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