begin process at 2010 02 10 11:18:57
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Débutant(e)

 > 

Probleme avec la récursivité... SVP


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Probleme avec la récursivité... SVP

mardi 19 décembre 2006 à 12:08:15 | Probleme avec la récursivité... SVP

orbb

Bonjour, voici une fonction récursive :

void m(DWORD i, char stem [10] = "")
{
    if (i < 2)
    {
        stem[i] = 'a';
        m(i+1, stem);
// ici
        stem[i] = 'b';
        m(i+1, stem);
    }
    return;
}

elle est appelée dans le programme principale par : m(0, "zzz");
mon probleme, la variable "stem" n'est pas restitué apres retour d'un apel recursif (où jai placé le commentaire, par exemple), alors que la variable "i" est bien restitué...
commment faire pour regler ce probleme ?
merci
mardi 19 décembre 2006 à 12:40:29 | Re : Probleme avec la récursivité... SVP

vecchio56

Administrateur CodeS-SourceS
Normalement, ca ne devrait pas compiler, car "zzz" est une chaine constante.
Mais bon ca passe, et dans ce cas on ne sait pas trop ce qui peut se passer. En tous cas ce n'est pas surprenant que le chaine soit modifiée, car tu passes son adresse, elle est donc directement modifiée

_____________________________________
Un éditeur de ressources gratuit pour Windows

mardi 19 décembre 2006 à 12:46:43 | Re : Probleme avec la récursivité... SVP

orbb

OK merci, est ce possible de faire en sorte que la chaine soit locale a la fonction ? un peu comme la variable "i"
mardi 19 décembre 2006 à 12:52:14 | Re : Probleme avec la récursivité... SVP

vecchio56

Administrateur CodeS-SourceS
1) Redéclarer un tableau local, et recopier stem dedans
void m(DWORD i, char stem [10] = "")
{
  char stemLocal[10];
  strcpy(stemLocal, stem);
  // Tu travailles sur stemLocal
  ...
}

2) Utiliser le template string, qui te permet de passer une chaine par valeur
void m(DWORD i, string stem)
{
  // stem est passé par valeur, tu peux le modifier localement
}
_____________________________________
Un éditeur de ressources gratuit pour Windows

mardi 19 décembre 2006 à 13:09:16 | Re : Probleme avec la récursivité... SVP

orbb

merci, j'ai essayé la 2ème possibilité vu quelle correspond a ce que je veut faire, mais ca me donne une erreur a la compilation : parametre non reconnu ligne 5
voila le source, vous etes sure qu'on peut utiliser string comme parametre ?

#include <windows.h>
#include <string.h>
#include "resource.h"

void m(DWORD i, string stem)
{
    if (i < 1)
    {
        stem = 'a';
        m(i+1, stem);
        stem = 'b';
        m(i+1, stem);
    }
    return;
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    m(0, 'z');
    return 0;
}
mardi 19 décembre 2006 à 13:17:40 | Re : Probleme avec la récursivité... SVP

vecchio56

Administrateur CodeS-SourceS
Réponse acceptée !
#include <windows.h>
#include <string>
#include "resource.h"

using namespace std;

void m(DWORD i, string stem)
{
    if (i < 1)
    {
        stem[i] = 'a';
        m(i+1, stem);
        stem[i] = 'b';
        m(i+1, stem);
    }
    return;
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    m(0, "zzz");
    return 0;
}

_____________________________________
Un éditeur de ressources gratuit pour Windows

mardi 19 décembre 2006 à 13:42:27 | Re : Probleme avec la récursivité... SVP

orbb

merci beaucoup, je vient de tester en ajoutant une messagebox, le resultat est correcte.
void m(DWORD i, string stem)
{
    if (i < 2)
    {
        stem[i] = 'a';
        m(i+1, stem);
          MessageBox(NULL, stem.data(), "Test", MB_OK);
        stem[i] = 'b';
        m(i+1, stem);
    }
    return;
}
merci encore
bye


Cette discussion est classée dans : variable, probleme, récursivité, stem, restitué


Répondre à ce message

Sujets en rapport avec ce message

Probleme avec une variable [ par cbil ] Cedric Me contacterBonjour tout le monde !J'ai un gros probleme avec une variable.J'assigne 1 ou 2 à la varia probleme avec cin et les chaines [ par prokev ] bon je sais c'est con mais quand je tape une string la fonction cin>>variable; calcule les espace comme plusieurs entrées... alors j'ai essayer cin.ge probleme avec des variable membre public [ par titouf71 ] Bonjour,J'ai un gros probleme avec des variables membres public.J'ai declare une variable membre en public en CString dans ma classe CLecture.Je voudr probleme de pointeur change [ par alphaone ] http://wingcommander.free.fr/mactransp.zipvoila mes sources fait avec dev cpp, alors quand vous compiler vous allez voir ma variable, s'affciher 2 foi Numérisation et récursivité. [ par SilverArgon ] Voila. J'ai un probleme au niveau de la numérisation d'un tableau dans un sous programmedont le but est de compter le nombre de cases séparant le poin Probleme ....... [ par miximog ] Bonjour,  je vais éssayez d'etre claire en faite voici mon problème je voudrai que mon programme soit totalement paramétrable par l'uttilisateur jusqu Probleme avec une variable de type DWORD [ par kgadhi ] Bonjour tout le monde,J'aimerais savoir comment on fait pour ecrire une variable de type DWORD dans un fichier,DWORD tmp = 0;....FILE *file = NULL;if Probleme avec une textbox [ par raboin ] Alors je vous explique, j'ai dans ma form une textbox et je voudrais recuperer son contenu pour le mettre dans une variable. Comment je fais? Merci PS Probleme de Variable [ par akaras ] Bonjour à tous,Voilà mon code :unsigned char Valeur[6];Valeur=Inp32(0x379);SetDlgItemText(hwnd , IDC_AFFICHAGE_RESULT, Valeur); Je veux afficher la le Probleme de variable [ par nazca ] Le Zero de la programmationNazcaj' ai un probleme de variable .on ne peut pas faire de conversion "CString "en "int"?Donc j'aimerais savoir comment on


Nos sponsors


Sondage...

Comparez les prix


HTC Magic

Entre 429€ et 429€

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,310 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales