Demande d'aide pour syntaxe MATLAB
Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

Demande d'aide pour syntaxe MATLAB



  1. #1
    invite2030ff51

    Demande d'aide pour syntaxe MATLAB


    ------

    Bonjour,

    Je veux trouver le chemin le plus court de mon labyrinthe parmi deux chemins.

    1011111111
    1000000001
    1011111101
    1010001101
    1010101101
    1010101101
    1010101101
    1000101101
    1111100001
    1111111101

    L'entrée est toujours en 1x2. Initialement la case 2x2 vaut 0
    La sortie est toujours en 10x9. Initialement la case 9x9 vaut 0

    Pour savoir lequel des deux chemins est le plus court,
    je décide de compter le nombre de zéro entre l'entreé et la sortie.


    Je remplace la case 2x2 par un 2

    Je regarde si autour de ce 2 il y a des chemins, cad des zéros.
    Je regarde en haut, en bas, à gauche et à droite.

    Si j'en trouve un, je le remplace par la valeur 2+1

    Ainsi de suite, grâce a une double boucle for, je scanne
    ma matrice et remplace tout les zéros, par (le nombre qui
    précéde + 1)

    Je m'arrète quand la case 9x9 n'est plus nulle


    Mon code est le suivant :

    Code:
    function A=labyrinthe(A)
    A(2,2)=2
    while A(9,9)~=O
    	for i= 2 : 9
    		for j= 2 : 9
    			if A(i,j)==1 return;
    			if A(i,j)==0 return
    
    				
    			elseif A(i+1,j)==0 A(i+1,j)=A(i,j)+1
    			elseif A(i-1,j)==0 A(i-1,j)=A(i,j)+1
    			elseif A(i,j+1)==0 A(i,j+1)=A(i,j)+1
    			elseif A(i,j-1)==0 A(i,j-1)=A(i,j)+1
    			end
    	end
    
    end


    Mais il ne marche pas...

    Pouvez vous me dire pourquoi. Merci infiniment.

    -----
    Dernière modification par JPL ; 25/05/2011 à 15h55. Motif: Balise Code ajoutée

  2. #2
    invitea29b3af3

    Re : Demande d'aide pour syntaxe MATLAB

    Salut
    Utilise la balise CODE pour le code, c'est nettement plus lisible.
    Je n'ai pas vérifié si au niveau de l'algorithme c'est juste, mais en tout cas au niveau de la syntaxe, c'est normal que ça ne marche pas, c'est bourré de fautes.

    1) tu as mis un O majuscule au lieu d'un 0 (zéro) dans ton while
    2) les lignes comme elseif A(i+1,j)==0 A(i+1,j)=A(i,j)+1 sont fausses. Soit tu mets une virgule comme ça: elseif A(i+1,j)==0, A(i+1,j)=A(i,j)+1 ou soit tu sautes à la ligne.
    3) pour chaque while, pour chaque for et pour chaque if, il faut un "end" à la fin. Je compte 5 (while/for/if) et seulement 3 end...
    4) même si j'ai pas vérifié l'algo, je ne vois pas ce que tu essaies de faire avec tes "return"... C'est pas "continue" que tu veux mettre plutôt?

Discussions similaires

  1. demande d'aide, matlab
    Par invite3cf0a0f1 dans le forum Mathématiques du supérieur
    Réponses: 16
    Dernier message: 16/10/2011, 00h31
  2. Syntaxe Matlab - extraction de vecteur
    Par invite5c27c063 dans le forum Programmation et langages, Algorithmique
    Réponses: 3
    Dernier message: 16/11/2010, 13h19
  3. Demande d'aide : GPS et Matlab
    Par invitefbae583f dans le forum Physique
    Réponses: 0
    Dernier message: 18/04/2010, 04h10
  4. Demande d'aide (gps-matlab)
    Par invitefbae583f dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 14/04/2010, 20h55
  5. demande d'aide sur Matlab
    Par invite2b962f0b dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 04/12/2006, 12h37