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

Algorithmes et structures de données Discussion :

Lire une matrice carrée en zig-zag


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2009
    Messages : 74
    Par défaut Lire une matrice carrée en zig-zag
    bonjour,
    j'ai passée toute une journée a ecrire un algorithme pour une matrice en zig-zag mais aucun resultat
    svp qu'elqu'un peut me proposer comment procède pour que je démarre
    Nom : zig-zag.jpg
Affichages : 5427
Taille : 53,7 Ko

  2. #2
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 491
    Par défaut
    salut

    pour commencer

    tu initialise deux variable a zero appelons au hasard x et y

    donc le but est au final d'arrivé au point maximal de ta matrice
    xmax et ymax

    tans que tu n'as pas atteint les deux valeur tu doit bouger

    donc :
    Code x : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       TansQue x <= xMax et y <= yMax Faire
                   DEBUT
    maintenant il faut définir les différents cas possible
    on sait que lorsque l'on atteint les bord il va falloir changer de direction

    Code x : 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
        
         SI (X = 0) Or (X = Xmax) ALORS // ON DECEND
            SI (Y = Ymax) ALORS // CAS OU ON ATEINT LE BAS
                X = X + 1 // ON SE DECALE SUR LA DROITE
            SINON
               Y = Y + 1  // ON SE DECALE VERS LE BAS
             FIN SI
            AfficherValeur(tableau(X,Y))
        SINON
            SI (Y = 0) Or (Y = Ymax) ALORS
                If (X = Xmax) ALORS // CAS OU ON ATEINT LE COTE DROIT
                    Y = Y + 1 // ON SE DECALE VERS LE BAS
                SINON
                  X = X + 1 // ON SE DECALE SUR LA DROITE
                FIN SI
                AfficherValeur(tableau(X,Y))
            FIN SI
        FIN SI
    il ne te reste plus que les diagonales soit montantes soit descendantes
    pour se faire c'est toujours pareil c'est les extrêmes qui vont te fournir le sens

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      SI (X = 0 Or Y = Ymax) ALORS croissant = FAUX FIN SI
        SI (Y = 0 Or X = Xmax) ALORS croissant = VRAI  FIN SI
    le reste est très simple je te laisse donc finir de compléter par toi même

  3. #3
    Membre confirmé
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2009
    Messages : 74
    Par défaut
    sur quel base j'attribue les valeurs de xmax et ymax ?

  4. #4
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 491
    Par défaut
    salut

    la taille de ta matrice

    si tu as une matrice de 7*7
    Xmax = 7 et Ymax = 7
    ce n'est pas plus compliqué que cela

  5. #5
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 227
    Par défaut
    A mon avis, xmax, ça veut dire x.maximum, et ymax y.maximum.

  6. #6
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 293
    Par défaut
    Bonjour

    D'où vient ce dessin ? Moi, je ne ferais pas comme ça. Je prendrais toutes les pseudo-diagonales dans le même sens.
    Et comme elles ont toutes la propriété d'avoir le même x+y, le parcours devient facile.

    Soit NxN la taille de la matrice carrée.
    Il faut donc faire une boucle de 2 à N+N (indiquant la diagonale que tu traites)
    A l'intérieur, faire une autre boucle pour les x de 1 à N. Le y se déduit facilement.
    Et tu remplis le tableau final.

    Maintenant, si tu tiens tellement à ton changement de sens, il suffit de rajouter un facteur -1indice.

    Et voilà !

  7. #7
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 491
    Par défaut
    salut

    sauf que tu ne répond pas à la question vu que tu as des flèches t'indiquant que c'est un chemin et non un remplissage de diagonal
    je dis ça je dis rien


    sinon effectivement avec une boucle for de 1 à N*N il y a une solution
    et pas besoin d'une boucle interne pour les x

    on initialise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      x = 1;
      y = 1;
      direction = 1;
    on boucle sur la matrice carré
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
      POUR element de 1 à taille*taille FAIRE
      DEBUT
        TAB[X,Y] := element;
        x = x + direction;
        y = y - direction;
    il y a 4 test a 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
     
        SI (x = 0) ALORS // Si x = 0 
          direction := -direction;
          x := x + 1;
        FIN SI;
     
        SI (X = taille +1) ALORS // si X est au max 
          direction := -direction;
          x := x - 1;
          y := y + 2;
        FIN SI;
     
        SI (y = 0) ALORS  // si y est a zero 
          direction := -direction;
          y := y + 1;
        FIN SI
     
        SI (y = taille + 1) ALORS // si y est au max
          direction := -direction;
          y := y - 1;
          x := x + 2;
        FIN SI
    Fin de la boucle

Discussions similaires

  1. algo qui manipule une matrice carré
    Par do_key_120 dans le forum Algorithmes et structures de données
    Réponses: 11
    Dernier message: 21/10/2007, 01h42
  2. Inversion d'une matrice carrée d'ordre
    Par rassol3 dans le forum C
    Réponses: 2
    Dernier message: 01/12/2006, 09h40
  3. Calculer le determinant d'une matrice carrée
    Par NThierry dans le forum C
    Réponses: 15
    Dernier message: 27/08/2006, 11h31
  4. Sous matrice carrée d'une matrice carrée
    Par devils55 dans le forum C++
    Réponses: 2
    Dernier message: 13/11/2005, 19h07
  5. Initialisation d'une matrice carrée (malloc...)
    Par kilinette dans le forum C
    Réponses: 4
    Dernier message: 17/10/2005, 19h57

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