Partage
  • Partager sur Facebook
  • Partager sur Twitter

exercice le labyrinthe

Sujet résolu
    19 septembre 2018 à 2:04:07

    voici le code que jai fais pour lexercice du labytinthe 
    lors de lexecution jai 
    le tableau de sortie et comme celui dentrer et avec un mesage bravo
    ou est le prblm ici
    merci
    #include<stdio.h>
    #include<stdlib.h>
    #define DIM 3
    int cheminRec(int tab[DIM][DIM],int x,int y){
    if(x<0||y<0||x>DIM||y>DIM) { return 0;
    if(tab[x][y]!=0)  return 0;
    if(x==DIM-1 && y==DIM-1)return 1;
    tab[x][y]=2;
    if(cheminRec( tab, x++,y)||cheminRec( tab, x,y++)||cheminRec( tab,x,y--)||    cheminRec( tab, x--,y)) return 1;
    tab[x][y]=3; return 0;}}
    void monChemin(int tab[DIM][DIM]){
    int x=0,y=0;
    if(cheminRec( tab, x,y)) printf("bravo");
    printf("ERREUR");}
    void affiche(int tab[DIM][DIM]){
    for(int i=0;i<DIM;i++){
    for(int j=0;j<DIM;j++){
    if(tab[i][j]==2) printf("+");
    else printf("*");} printf("\n");}}
    void main(){
    int tab[3][3]={{0,0,1},{1,0,0},{1,1,0}};
    affiche(tab);
    monChemin(tab);
    affiche(tab);
     }
    • Partager sur Facebook
    • Partager sur Twitter
      19 septembre 2018 à 7:11:02

      Bonjour,

      Le message qui suit est une réponse automatique activée par un membre de l'équipe. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention.
      Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé.

      Pour plus d'informations, nous vous invitons à lire les règles générales du forum

      Merci d'utiliser la mise en forme de code Image

      Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour cela, il faut utiliser le bouton Image de l'éditeur, choisir un des langages proposés et coller votre code dans la zone prévue. Si vous utilisez l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: cpp;">Votre code ici</pre>.

      Manque de Politesse

      Votre message ne comporte pas ou peu de formules de politesse (« Bonjour », « Merci », « Au revoir », etc.). Les règles du site exigent que chaque nouveau message comporte un minimum de politesse. Après tout, les gens qui répondent le font gratuitement, sur leur temps libre. Ils méritent bien un minimum de considération, n'est-ce pas ?

      • Partager sur Facebook
      • Partager sur Twitter
        19 septembre 2018 à 8:29:44

        Bonjour, 

        Alors je vais pas te cacher que ton code est … en fait tu fais tout ce qu'il faut pas faire, je parle pas de l'indentation qui à disparue avec le copier collé mais bien du reste :

        • tu ne places pas un seul espace,
        • pas de saut ligne,
        • pas de commentaire,
        • plusieurs instructions sur la même ligne,
        • des accolades en fin de ligne… 
        pour pouvoir le lire, je suis obligé de faire du refactoring dessus, et ça c'est pas bon, ça devrai ressembler plus à ça (il manque encore les commentaires mais bon) :
        #include<stdio.h>
        #include<stdlib.h>
        #define DIM 3
        
        int cheminRec ( int tab[DIM][DIM], int x, int y )
        {
        	if ( ( x < 0 ) ||
        		( y < 0 ) ||
        		( x > DIM ) ||
        		( y > DIM ) )
        	{
        		return 0;
        
        		if ( tab[x][y] != 0 )
        		{
        			return 0;
        		}
        
        		if ( ( x == ( DIM - 1 ) ) &&
        			( y == ( DIM - 1 ) ) )
        		{
        			return 1;
        		}
        
        		tab[x][y] = 2;
        
        		if ( cheminRec( tab, x++, y ) ||
        			cheminRec( tab, x, y++ ) ||
        			cheminRec( tab, x, y-- ) ||
        			cheminRec( tab, x--, y ) )
        		{
        			return 1;
        		}
        
        		tab[x][y] = 3;
        		return 0;
        	}
        }
        
        void monChemin ( int tab[DIM][DIM] )
        {
        	int x=0, y=0;
        	if ( cheminRec( tab, x, y ) )
        	{
        		printf("bravo");
        	}
        	printf("ERREUR");
        }
        
        void affiche ( int tab[DIM][DIM] )
        {
        	for ( int i = 0; i < DIM; i++ )
        	{
        		for ( int j = 0; j < DIM; j++ )
        		{
        			if ( tab[i][j] == 2 )
        			{
        				printf("+");
        			}
        			else
        			{
        				printf("*");
        			}
        		}
        		printf("\n");
        	}
        }
        
        void main()
        {
        	int tab[3][3]={{0,0,1},{1,0,0},{1,1,0}};
        	affiche(tab);
        	monChemin(tab);
        	affiche(tab);
        }

        pour le problème, pas besoin d'analyser le code, le refactoring suffit, dans la fonction récurrente cheminRec, tu ne fais rien, si la première égalité est fausse alors tu fais rien (même pas le retour de valeur), si l'égalité est vrai alors tu return 0.

        PS : si je te dis tout ça sur ton code, c'est pour que tu t'améliores et que tu prenne de bonnes habitude tout de suite.

        -
        Edité par ox223252 19 septembre 2018 à 8:30:56

        • Partager sur Facebook
        • Partager sur Twitter

        la connaissance est une chose qui ne nous appauvrit pas quand on la partage.

        Mon GitHub

          10 avril 2019 à 16:28:31

          meci beaucoup c gentil de votre part

          • Partager sur Facebook
          • Partager sur Twitter

          exercice le labyrinthe

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown