Vous ne savez pas comment faire en sorte de ne pas tomber sur la même ligne quand on veut inverser 2 lignes ? je vous montre le code et je vous détaille ce qui ne va pas ...
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
a=[7 2 8 4 6 5 3 9 1;4 3 1 9 8 7 5 2 6;6 5 9 1 2 3 4 8 7;1 8 5 2 7 4 6 3 9;9 6 2 3 5 8 1 7 4;3 4 7 6 9 1 8 5 2 ;5 7 6 8 4 2 9 1 3;2 1 4 5 3 9 7 6 8;8 9 3 7 1 6 2 4 5]
x=randi(9,1,1);
disp(x);
if x<4
    j=(randi(3,1,1));
    x~=j;
            aux=a(x,:);
        a(x,:)=a(j,:);
        a(j,:)=aux;
elseif x>3 && x<7
        j=(randi(3,1,1)+3);
        x~=j;
               aux=a(x,:);
        a(x,:)=a(j,:);
        a(j,:)=aux;
else x>6
        j=(randi(3,1,1)+6);
        x~=j;
                aux=a(x,:);
        a(x,:)=a(j,:);
        a(j,:)=aux;    
end
disp(a);
disp(j);
disp(x);
Donc des fois, le j et le x sont les mêmes donc du coup, il n'y a pas d'inversions de lignes. Et malgré le fait que j'ai mis x~=j, et bien j'ai toujours ce problème ...