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 :

Algo récursif tableau


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 57
    Points : 13
    Points
    13
    Par défaut Algo récursif tableau
    Bonjour,

    Je débute en algorithmique et j'essaye de faire un algo qui parcours un tableau à une dimension, chaque valeur du tableau est représenté par un point si il y a une croix par éxemple on bloque l'avancement la fonction doit retourner 1 si il n'y a pas eu de blocage et 0 sinon mais et c'est surement du à la récusivité les valeur de déplacement de ma variable diminue alors qu'elle doivent augmenter pour atteindre la même valeur que la variable dont la valeur correspond à la dernière case du tableau.

    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
    typedef struct
    	{
    		int x;
    	}coord;
     
     
    int verif(coord depart, coord arrive, char lab[], int size_table)
    {
    	coord temp;
    	char point = '.';
     
    	temp = depart;
     
    if(temp.x + 1 < size_table)
    {
    	if(lab[temp.x + 1] == point)
    	{
     
    		temp.x++;
     
    	}
     
    }
    	return temp.x;
     
    }
    int main(int argc, char *argv[])
    {
     
    	char lab[4] = {'.', '.', '.', '.'};
    	coord depart;
    	coord arrive;
    	depart.x = 0;
    	arrive.x = 4;
    	int size_table = 4;
    	printf("%d", verif(depart, arrive, lab, size_table));
     
        return 0;
    }
    ici j'ai mis return temps.x poru vérifer sa valeur qui est 1 et mois j'attend 4 pour qu'elle soit égale à arrive et ainsi pour faire une comparaison et retourner 1 ou 0 mais je ne vois pas comment faire je suis bloquer et j'ai beau réfléchir je ne trouve. Serait-je vraiment un vrai NULL

  2. #2
    Membre averti

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 242
    Points : 354
    Points
    354
    Par défaut
    Bonjour,

    Je débute en algorithmique et j'essaye de faire un algo qui parcours un tableau à une dimension, chaque valeur du tableau est représenté par un point si il y a une croix par éxemple on bloque l'avancement la fonction doit retourner 1 si il n'y a pas eu de blocage et 0 sinon mais et c'est surement du à la récusivité les valeur de déplacement de ma variable diminue alors qu'elle doivent augmenter pour atteindre la même valeur que la variable dont la valeur correspond à la dernière case du tableau.
    Ceci est une belle phrase, difficilement compréhensible. Néanmoins, en faisant un (petit) effort, je devine:
    -Tu parcours un tableau
    -Si tu rencontres un certain caractères (=blocage) tu retournes 0
    -Si a la fin du parcours, pas eu de blocage, tu retournes 1.

    J'espère avoir bien compris.
    Pour parcourir un tableau en C, c'est pas compliqué (on a bien dû t'apprendre ça...). Pas besoin de créer une structure coord (surtout une structure avec un seul champ a l'intérieur, c'est pas très utile).
    Enfin, moi mon code donnerait quelque chose dans ce genre...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    char verif (char *lab, int taille){
       char ok=1;
       int i=0;
       while (ok && (i < taille)){
         if (lab[i]== '.')
           ok=0;
         i++;
       }
       return ok ;
    }
    Ah mais tu voulais le faire en récursif ?? Dans ton code il n'y a AUCUN appel récursif... Bon en récursif

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    char verif (char *lab, int taille){
       if (taille==0)
         return 1;
       if (lab[taille-1]=='.')
         return 0;
       return verif(lab, taille -1);
    }
    Bon, j'espère pas avoir fait trop nimps... Mais sérieux, je comprend rien à ta fonction verif!

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 57
    Points : 13
    Points
    13
    Par défaut
    oui tu as bien compris en fait je voulais plus tard débouché dans un algo de labyrinthe mais je voulais tester mon algo comme ça pour être sûr qu'il soit bon. Disons que le tableau correspond au dessins du labyrinthe et que chaque point c'est une case et si je met autre chose qu'un point ça bloque et je vais devoir tester d'autre position. Donc en fait au final je dois pouvoir adapté mon algo pour un tableau à 2 dimensions.

  4. #4
    Membre éprouvé Avatar de orfix
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 707
    Points : 1 132
    Points
    1 132
    Par défaut
    Avec un appel récursif ta fonction pourrais ressembler à :
    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
     
    int verif(coord depart, coord arrive, char lab[], int size_table)
    {
    	int ret;
    	coord temp;
    	char point = '.';
     
    	temp = depart;
    	if( arrive.x==depart.x )
    	{ /* fin du parcours, sans blocage */
    		ret = 1; 
    	}
    	else
    	{
    		if(temp.x < size_table)
    		{
    			if(lab[temp.x] == point)
    			{ /* on continue ...*/
    				temp.x++;
    				ret = verif(temp,arrive,lab,size_table);
    			}
    			else
    			{ /* parcours interrompue */
    				ret = 0;
    			}
    		}
    	}
    	return ret;
    }
    To start press any key. (reading screen) Where's the "any" key? I see Esc, Catarl, and Pig Up. There doesn't seem to be any "any" key. Wo! All this computer hacking is making me thirsty. I think I'll order a Tab. (presses TAB key). -- HOMER --

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 57
    Points : 13
    Points
    13
    Par défaut
    Ok merci c'est parfaitement ça

    PS : pour l'appel reursif je l'avais mis mais je l'ai efface sans le vouloir en tout cas merci c'est vraiment ça que je voulais. Je l'avais fait mais je m'était tromper au niveau du return c'est pour ça que ça fonctionnais pas. un grand merci je comprend déjà mieux maintenant.

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

Discussions similaires

  1. Algo tri tableau
    Par goldy91 dans le forum Algorithmes et structures de données
    Réponses: 20
    Dernier message: 04/01/2009, 22h35
  2. [Algo] Affichage tableau 2 dimensions
    Par Invité(e) dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 28/11/2008, 15h13
  3. algo et tableau unidimensionnel
    Par elmo93 dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 05/11/2007, 08h06
  4. [Tableaux] Problème algo récursif
    Par Invité dans le forum Langage
    Réponses: 38
    Dernier message: 03/10/2006, 15h49

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