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 :

fonction créant problème (court)


Sujet :

C++

  1. #1
    Membre du Club Avatar de Gilles57-H-G
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 88
    Points : 62
    Points
    62
    Par défaut fonction créant problème (court)
    Bonjour .Je veux traduire cette fonction VB en C++.

    La fonction VB renvoie une chaine de caractères. Collez cette fonction dans un module Openoffice, cela revoi un Texte box. Le résultat est dans: strRes.

    Code VB : 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
    Public Function CombineAJako()
    Dim strRes As String
     
    fnCombine "12", 2, "", 0, 2, strRes
    ''''Testez fnCombine "1234", 4, "", 0, 4, strRes
    MsgBox strRes
     
    End Function
     
    Sub fnCombine(ByVal strVal As String, ByVal iLgStrVal As Integer, strWord As String, ByVal iLg As Integer, ByVal iTargetLg As Integer, ByRef strRes As String)
    Dim i As Integer
    Dim c As String
     
    If (iLg = iTargetLg) Then
    strRes = strRes + strWord + ", "
    Exit Sub
    End If
     
    For i = 1 To iLgStrVal
    c = Mid(strVal, i, 1)
    fnCombine strVal, iLgStrVal, strWord + c, iLg + 1, iTargetLg, strRes
    Next i
     
    End Sub


    Voici maintenant la fonction en C++, elle ne fonctionne pas.

    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
    #include <cstdlib>
    #include <iostream>
    #include <stdio.h>
    #include <cstring>
    #include <string> 
    #include <fstream>
    using namespace std;
     
    void fnCombine(string strVal, int iLgStrVal, string strWord, int iLg, int iTargetLg, string strRes);
     
    int main(int argc, char *argv[])
    {
        string strRes;
        strRes = "";
     
        fnCombine("12", 2, "", 0, 2, strRes);
     
       /// ++--Testez---++//// fnCombine("1234", 4, "", 0, 4, strRes);
     
    	cout<<strRes;
     
        system("PAUSE");
        return EXIT_SUCCESS;
     
       }
     void fnCombine(string strVal, int iLgStrVal, string strWord, int iLg, int iTargetLg, string strRes)
    		{
    		int i ;
    		string c ;
     
     
    			if (iLg == iTargetLg)
    			{
    				strRes = strRes + strWord + ", ";
    			return  ;	
    			}
     
    			for (i = 1; i < iLgStrVal; i++)
    			{
    			   c = strVal.substr (i- 1, 1); 
    			   fnCombine(strVal, iLgStrVal, strWord + c, iLg + 1, iTargetLg, strRes);
    		                                                                                	}
     
    		}

  2. #2
    Membre confirmé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 096
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 096
    Points : 633
    Points
    633
    Par défaut
    Salut,

    Déja pourrais tu mettre des balises [code] ainsi qu'edenter le code permet une meilleure visibilité.

    Il faut que tu passes le dernier string par référence. Sinon au retour, tu n'auras pas ton résultat

  3. #3
    Membre du Club Avatar de Gilles57-H-G
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 88
    Points : 62
    Points
    62
    Par défaut
    Le string est une chaine de caractère, sous VB, elle se retrouve dans : strRes.

    Je ne sais pas la récupérer, dans la fonction.

    C'est la valeur strRes que je cherche, modifié par la fonction et ses paramètres.
    (Ce sont les seuls commentaires que j'ai laissé)

    VB et C++, fonctionnerais différemment, VB modifierai strRes, C++ non.

    Les fonctions étant sans retour (void)

  4. #4
    Membre confirmé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 096
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 096
    Points : 633
    Points
    633
    Par défaut
    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
    #include <cstdlib>
    #include <iostream>
    #include <stdio.h>
    #include <cstring>
    #include <string> 
    #include <fstream>
    using namespace std;
     
    void fnCombine(string strVal, int iLgStrVal, string strWord, int iLg, int iTargetLg, string &strRes);
    	
    int main(int argc, char *argv[])
    {
        string strRes;
        strRes = "";
        
        fnCombine("12", 2, "", 0, 2, strRes);
     
       /// ++--Testez---++//// fnCombine("1234", 4, "", 0, 4, strRes);
       
    	cout<<strRes;
     
        system("PAUSE");
        return EXIT_SUCCESS;
     
       }
     void fnCombine(string strVal, int iLgStrVal, string strWord, int iLg, int iTargetLg, string &strRes)
    		{
    		int i ;
    		string c ;
     
     
    			if (iLg == iTargetLg)
    			{
    				strRes = strRes + strWord + ", ";
    			return  ;	
    			}
     
    			for (i = 1; i < iLgStrVal; i++)
    			{
    			   c = strVal.substr (i- 1, 1); 
    			   fnCombine(strVal, iLgStrVal, strWord + c, iLg + 1, iTargetLg, strRes);
    		                                                                                	}
     
    		}

  5. #5
    Membre du Club Avatar de Gilles57-H-G
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 88
    Points : 62
    Points
    62
    Par défaut



    Super, cela a avancé, maintenant j'ai un string qui apparait.

    Mais il manque des combinaisons, par rapport à la version VB je vais voir si je ne me suis pas planté, en traduisant.

    Pourtant j'ai déjà contrôle, j'ai transformé le Mid en .substr, et j'ai vérifié la concaténation.

    Merci encore

  6. #6
    Membre confirmé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 096
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 096
    Points : 633
    Points
    633
    Par défaut
    Citation Envoyé par Gilles57-H-G Voir le message



    Super, cela a avancé, maintenant j'ai un string qui apparait.

    Mais il manque des combinaisons, par rapport à la version VB je vais voir si je ne me suis pas planté, en traduisant.

    Pourtant j'ai déjà contrôle, j'ai transformé le Mid en .substr, et j'ai vérifié la concaténation.

    Merci encore
    Tu peux indiquer les deux sorties que tu as suivant le langage ?

  7. #7
    Membre du Club Avatar de Gilles57-H-G
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 88
    Points : 62
    Points
    62
    Par défaut
    C'est à dire sortie ?

    En VB , j'appelle la fonction :

    fnCombine "aaa", 3, "", 0, 3, strRes

    strRes se retrouve remplie d'une chaine de caracteres, composé de, aaa,aab,aac,aba...

    Les combinaison de n lettres ( 3 sur cet Exemple) sont séparées par le caractère : ,

    Cela me donne toutes les combinaisons de trois lettres avec ABC, avec la répétition de caractères .
    aaa
    aab
    aac
    aba
    abb
    abc
    aca
    acb
    acc
    baa
    bab
    bac
    bba
    bbb
    bbc
    bca
    bcb
    bcc
    caa
    cab
    cac
    cba
    cbb
    cbc
    cca
    ccb
    ccc

    Soit 27 combinaisons.

    Si j'appelle la fonction comme ceci :

    fnCombine "abcd", 4, "", 0, 4, strRes

    alors, j'ai, dans la variable : strRes

    aaaa
    aaab
    aaac
    aaad
    aaba
    aabb
    aabc
    aabd
    aaca
    aacb
    aacc
    aacd
    ...
    ...
    ..
    dddd

    Soit 256 combinaisons.

    En C++ l'appel est pareil , et je reçoit dans strRes

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

Discussions similaires

  1. Problème avec une fonction créant des requêtes
    Par scarabeous dans le forum Access
    Réponses: 11
    Dernier message: 16/07/2008, 14h10
  2. [RegEx] Fonction preg_match problème
    Par wylls dans le forum Langage
    Réponses: 2
    Dernier message: 13/12/2006, 17h06
  3. [Fonction](recursive) Problème pour dresser un arbre
    Par Invité dans le forum Langage
    Réponses: 4
    Dernier message: 21/11/2006, 13h35
  4. Fonction ASP: problème avec popup
    Par claralavraie dans le forum ASP
    Réponses: 6
    Dernier message: 07/02/2006, 10h31
  5. histoire de fonction avec problème sur arguments
    Par bébé dans le forum Langage
    Réponses: 5
    Dernier message: 07/01/2006, 11h29

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