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

Algorithmes et structures de données Discussion :

Récursivité -- Erreur d'accès mémoire


Sujet :

Algorithmes et structures de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 108
    Points : 53
    Points
    53
    Par défaut Récursivité -- Erreur d'accès mémoire
    Bonjour,
    j ai implementer un algorithme recursive sauf que lors de l execusion ... je rencontre un probleme "Erreur d'accès mémoire"

    voici mon code
    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
     
     
    int split ( int x1, int y1, int x2, int y2, ColorImage & img, float param )
    {
     	int var;
     	if ( x1>x2 )
     	{
     		var=x1;
     		x1=x2;
     		x2=var;
     	}
     
     	if ( y1>y2 )
    	{
     		var=y1;
     		y1=y2;
     		y2=var;
     	}
     
    	if ( isHomogenious ( x1,y1,x2,y2,img,param ) )
    	{
    		applyColor ( x1,y1,x2,y2,img );
    	}
    	else
    	{
     		int xm= ( x2-x1 ) /2;
     		int ym= ( y2-y1 ) /2;
     
     		split ( x1,y1,xm,ym,img,param );
    		split ( xm, y1 , x2 , ym ,img,param );
     		split ( x1 , ym , xm , y2 ,img,param );
     		split ( xm, ym , x2 , y2,img,param );
     
     
    	}
    	return 1;
    }

  2. #2
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Comme toujours en récursivité, vérifies que tu as bien une condition d'arrêt et qu'elle est bien atteinte au moins une fois. (dans ton cas, vérifie que la branche isHomogenious est bien atteinte)

    Pour debugger rien de plus simple, affiche chacun des paramètres de ta fonction et vérifie qu'il n'y a pas de problèmes (bon intervalle de valeur, valeur dans la norme, ...)

    D'ailleurs au passage, pourquoi n'y a t'il qu'un seul return ? (et à quoi te sert t'il ?)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 108
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par PRomu@ld Voir le message
    Comme toujours en récursivité, vérifies que tu as bien une condition d'arrêt et qu'elle est bien atteinte au moins une fois. (dans ton cas, vérifie que la branche isHomogenious est bien atteinte)

    Pour debugger rien de plus simple, affiche chacun des paramètres de ta fonction et vérifie qu'il n'y a pas de problèmes (bon intervalle de valeur, valeur dans la norme, ...)

    D'ailleurs au passage, pourquoi n'y a t'il qu'un seul return ? (et à quoi te sert t'il ?)
    Merci pour ta reponse PRomu@ld!!
    j ai trouve le probleme de ma finction mais je ne sais pas comment le resoudre!!
    en effet! lorsque les appels de la fonction Split se chauvauchent ... les valeurs prises de x1, y1, x2, y2 ne sont plue correcte apres 2 iterations!!
    Question:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    void split ( int &x1, int& y1, int& x2, int &y2, ColorImage & img, float param)
    l appel de ces variables par references peut resoudre le probleme!?

  4. #4
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par Monta^^ Voir le message
    l appel de ces variables par references peut resoudre le probleme!?
    Heu... non. Surtout pas !

    Ce code me semble louche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int xm= ( x2-x1 ) /2;
    int ym= ( y2-y1 ) /2;
    Le milieu d'un segment c'est plutôt (x2+x1)/2
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 108
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Heu... non. Surtout pas !

    Ce code me semble louche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int xm= ( x2-x1 ) /2;
    int ym= ( y2-y1 ) /2;
    Le milieu d'un segment c'est plutôt (x2+x1)/2
    Salut,

    j ai resolu le probleme depuis quelque jours mais j ai oublie de mentionner l erreur:
    xm=x1 + (x2-x1)/2
    ym=y1 + (y2-y1)/2

    Merci pour ton aide pseudocode ^^

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

Discussions similaires

  1. [Débutant] Erreur d'accès à la mémoire
    Par genius4evers dans le forum VB.NET
    Réponses: 1
    Dernier message: 01/12/2014, 12h25
  2. Try Catch (?) sur une erreur d'accès mémoire
    Par Jflop91 dans le forum Langage
    Réponses: 1
    Dernier message: 26/03/2013, 16h36
  3. Erreur acces mémoire
    Par skalimer0 dans le forum C++Builder
    Réponses: 12
    Dernier message: 27/08/2008, 18h09
  4. Erreur d'acces a une base de donnees: idapid32.dll
    Par mevellea dans le forum Bases de données
    Réponses: 3
    Dernier message: 23/10/2005, 20h10

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