Tout les sous matrice possible d'une matrice [Résolu]

Tout les sous matrice possible d'une matrice [Résolu] - Algo - Programmation

Marsh Posté le 28-03-2007 à 23:55:51    

Hi
J'ai un petit problème avec un algo qui consiste à extraire toutes les sous matrice s_mat de taille s_N (lignes) et s_M (colonnes) à partir d'une matrice mat de taille N (lignes) et M (colonnes).
Si par exemple j'ai une matrice mat de taille (3,3) comme ceci:

2 6 8
0 1 3
8 5 7


et que les sous matrices à extraire sont de taille (2,2), alors les sous matrices à extraire sont:

2 6
0 1


6 8
1 3


0 1
8 5


1 3
5 7


 
Alors voilà l'algorithme fonctionnel auquel j'ai ponçais:
 
1) crée (allouer) à chaque fois une sous matrice s_mat.
2) parcourir cette sous matrice pour la remplir à partir d'un indice de ligne L et un indice de colone C comme
    ceci:
    les Lignes: de L à L+s_N
    les Colonne de C à L+s_M
3) Faire varier les indice L et C comme ceci:
    if( C <= M-s_M )
            C = C + 1;
    else
    {
         C = 0;
         L = L + 1;
     }
 
En claire ça donne ceci:

ExtractionDESousMatrice( Matrice mat(N, M), Entier s_N, Entier s_M )
{
    Entier i, j, L=0, C=0;
    Matrice s_mat;
 
    TantQue ( L <= N-s_N )
    {
        AllocationMemoire( s_mat, s_N,  s_M);
 
        for( i=L   à   L+s_N -1 )
            for( j=C  à   j<s_M -1 )
                s_mat[i][j] = mat[i][j];
 
        if( C <= M-s_M )
            C++;
        else
        {
            C = 0;
            L++;
        }
 
        AffichageMatrice(s_mat);
 
        FreeMemoire( );
    }
 
}


 
Mais en l'implémentant en langage C, ça ne me donne pas le résultat attendu !
 
merci


Message édité par _Reggae_ le 30-03-2007 à 19:45:19
Reply

Marsh Posté le 28-03-2007 à 23:55:51   

Reply

Marsh Posté le 29-03-2007 à 00:08:59    

Ponce encore...

Reply

Marsh Posté le 29-03-2007 à 16:10:40    

lkolrn a écrit :

Ponce encore...


C'est bon, en fait c'est tout bette:

ExtractionSMATRCIE( Matrice mat(N, M), Entier s_N, Entier s_M )
{
    Entier i, j, L=0, C=0;
    Matrice s_mat;
 
    TantQue ( L <= N-s_N )
    {
        AllocationMemoireMatrice( s_mat , s_N,  s_M);
 
        for( i=0   à   s_N -1 )
            for( j=0  à   s_M -1 )
                s_mat[i][j] = mat[i+C][j+L];
 
        if( C < M-s_M )
            C++;
        else
        {
            C = 0;
            L++;
        }
 
        AffichageMatrice(s_mat);
 
        FreeMemoireMatrice(  );
    }
 
}



Message édité par _Reggae_ le 30-03-2007 à 19:46:28
Reply

Marsh Posté le 30-03-2007 à 17:18:47    

salut  
j'ai aussi besoin de l'aglo d'extraction de sous matrice mais dans le premier exemple
2 6 8  
0 1 3  
8 5 7
 
 
les matrice  2 8    0 3  sont des sous matrice mais l'algo que vous citez  
                 0 3   8 7
plus haut ne les prend pas en charge et ne les affiche pas comment faire pour afficher toute les sous matrice ?
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed