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 :

Tri d'une matrice spirale


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 14
    Par défaut Tri d'une matrice spirale
    j'ai trouvé une dificulté pour le trie d'une matrice spirale dans l'exercice au desous, j'ai besoin seulement du principe,si quelqu'un peut m'aider

    Faites un programme en C qui effectue la lecture à partir du clavier d’un nombre entier N et puis N2 nombres réels, les trie en ordre décroissant et les range dans un tableau carré en spirale depuis le centre à gauche. Faites et utilisez un sous-programme pour l’affichage des résultats.


    merci d'avance

  2. #2
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    863
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 863
    Par défaut
    Pourriez-vous poster votre code ?

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 487
    Par défaut
    Citation Envoyé par hacker33 Voir le message
    j'ai trouvé une dificulté pour le trie d'une matrice spirale dans l'exercice au desous, j'ai besoin seulement du principe,si quelqu'un peut m'aider

    Faites un programme en C qui effectue la lecture à partir du clavier d’un nombre entier N et puis N2 nombres réels, les trie en ordre décroissant et les range dans un tableau carré en spirale depuis le centre à gauche. Faites et utilisez un sous-programme pour l’affichage des résultats.


    merci d'avance
    bhh ou se trouve le probléme?

  4. #4
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 14
    Par défaut
    je peut faire le trie d'une matrice ordinaire mais pour une matrice spirale je sait pas de koi il s'agit au juste
    NB: ne me donnez pas la reponse à l'exercice ,donner moi seulement l'astuce

  5. #5
    Membre Expert
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par défaut
    Salut,

    à mon avis c'est comme ça le tableau:

    ou comme ça:

    Ca dépend dans quelle direction tu pars après être tourné à gauche (en haut ou en bas?)

  6. #6
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 14
    Par défaut
    je cherche du côté programation

  7. #7
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    et ??

  8. #8
    Membre Expert
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par défaut
    Niveau algorithme ça serait:

    *trier

    *Calculer la position du centre de la matrice
    *Aller une case à gauche
    *une case en haut
    *deux cases à droite
    *deux cases en bas
    *trois cases à gauche
    *trois cases en haut
    *quatre cases à droite

    etc.

    Si je ne me suis pas trompé, ça devrait pouvoir s'adapter facilement niveau programmation.

    Après je sais pas comment tu dois gérer ça si il n'y a pas N*N nombres, ou si N est pair (ce qui veut dire qu'il n'y a pas de centre)

  9. #9
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 14
    Par défaut Trie d'une matrice spirale
    je doit resoudre ce exercice mais j'ai trouvé une dificulté, ça sera tres gentil si quelqu'un peut m'aider

    Faites un programme en C qui effectue la lecture à partir du clavier d’un nombre entier N et puis N2 nombres réels, les trie en ordre décroissant et les range dans un tableau carré en spirale depuis le centre à gauche. Faites et utilisez un sous-programme pour l’affichage des résultats.

    voila se que j'ai pu faire

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    #include<stdio.h>
    #include<stdlib.h>
    #include<math.h>
    int main(void)
    {
    int mat[20][20]; //la matrice
    int i,j; //indice courant
    int N,NB,k,x,m,p,h,l;
     
     
    printf("donner le le rang du matrice: ");
    scanf("%d",&N);
    NB=N*N    ;
     
     
    for(i=0;i<N;i++)
    for(j=0;j<N;j++)
    {
    printf("donner mat[%d][%d]: ",i,j);
    scanf("%d",&mat[i][j]);
    }
    for(i=0;i<N;i++)
    {
    for(j=0;j<N;j++)
    printf("%d ",mat[i][j]);
    printf("\n");
    }
    m=3   ;
    h=(N/2)+1;
    for(p=0;p<NB;p++)
     for(l=1;l<NB;l++)
    for(i=h;N<NB;i++)
    {
    if(mat[i][m]<mat[i-1][m])
    {x= mat[i-1][m];
    mat[i-1][m]=mat[i][m] ;
    mat[i][m]=x;
    }
    if(mat[i][m-1]<mat[i][m])
    {x= mat[i][m-1];
    mat[i][m-1]=mat[i][m] ;
    mat[i][m]=x;
    m=m+1;
    i=pow(l,p)   ;
    }
    }
    for(i=0;i<N;i++)
    {
    for(j=0;j<N;j++)
    printf("%d ",mat[i][j]);
    printf("\n");
    }
    }
    merci d'avance

  10. #10
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 14
    Par défaut
    mon principe consiste à:
    partir du centre
    *Aller une case à gauche
    *une case en haut
    *deux cases à droite
    *deux cases en bas
    *trois cases à gauche
    *trois cases en haut
    *quatre cases à droite

  11. #11
    Membre Expert
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par défaut
    Bonjour,

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    #include<stdio.h>
    #include<stdlib.h>
    #include<math.h>
     
    int main(void)
    {
        int mat[20][20]; //la matrice
        int i,j; //indice courant
        int N,NB,x,m,p,h,l;
     
     
        /* On rentre les infos */
        printf("donner le le rang du matrice: ");
        scanf("%d",&N);
        NB=N*N    ;
     
     
        for (i=0;i<N;i++)
            for (j=0;j<N;j++)
            {
                printf("donner mat[%d][%d]: ",i,j);
                scanf("%d",&mat[i][j]);
            }
        /* Maintenant on a la matrice non triée
           -- affichage -- */
        for (i=0;i<N;i++)
        {
            for (j=0;j<N;j++)
                printf("%d ",mat[i][j]);
            printf("\n");
        }
        m=3;
     
        h=(N/2)+1;
        for (p=0;p<NB;p++)
            for (l=1;l<NB;l++)
                for (i=h;N<NB;i++)
                {
                    if (mat[i][m]<mat[i-1][m])
                    {
                        x= mat[i-1][m];
                        mat[i-1][m]=mat[i][m] ;
                        mat[i][m]=x;
                    }
                    if (mat[i][m-1]<mat[i][m])
                    {
                        x= mat[i][m-1];
                        mat[i][m-1]=mat[i][m] ;
                        mat[i][m]=x;
                        m=m+1;
                        i=pow(l,p)   ;
                    }
                }
     
        for (i=0;i<N;i++)
        {
            for (j=0;j<N;j++)
                printf("%d ",mat[i][j]);
            printf("\n");
        }
     
        return 0;
    }
    Je ne comprends pas ce que fait:

    Ensuite dans ta boucle:

    Ce ne serait pas:

    Puis quand par exemple il y a ce code:

    m vaut tout le temps 3, pourquoi ça? Si par exemple la largeur/hauteur de la matrice est inférieure à 3, tu vas te retrouver avec un problème.

  12. #12
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 14
    Par défaut Remplir une matrice en spirale
    j'ai un sérieu problème je prépare une tache personnel mais j'ai trouvé un problème pour remplire une matrice en spirale.
    j'avai pas trouvé la moindre idée .
    NB:le remplissage de matrice se fait en spirale.
    si quelqu'un peut m'aidé ça sera tres genti.
    et merci d'avance

Discussions similaires

  1. Tri d'une matrice par colonne
    Par bigamine5 dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 23/10/2012, 16h54
  2. Tri d'une matrice
    Par electroo1 dans le forum MATLAB
    Réponses: 2
    Dernier message: 15/05/2012, 02h15
  3. Tri d'une matrice (entrée sous forme de vector)
    Par MoiJF dans le forum Débuter
    Réponses: 6
    Dernier message: 27/04/2009, 05h36
  4. tri d'une matrice
    Par frieu dans le forum MATLAB
    Réponses: 3
    Dernier message: 02/01/2009, 22h11
  5. Tri d'une matrice de coordonnées
    Par Omar_Houllette dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 10/07/2008, 11h00

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