tableau en escargot

Discussion dans 'Web, design' créé par draibins, 3 Avril 2012.

  1. Offline
    draibins Touriste
    bonjour,
    je suis en train de codé un programme qui permet de remplir une matrice 5*5 de maniere escargot c 'est a dire de commencer des le centre .l'affichage sera de la sorte

    13 12 11 10 25
    14 3 2 9 24
    15 4 1 8 23
    16 5 6 7 22
    17 18 19 20 21
    quelqu'un peut m'aider sur lalgorithme?
    draibins, 3 Avril 2012
    #1
  2. Offline
    DeflaMental [-_-]
    Déjà donne nous le langage :)

    Et si c'est tjs une 5x5, bah tu définis manuellement les 25 positions à remplir en suivant.
    DeflaMental, 3 Avril 2012
    #2
  3. Offline
    draibins Touriste
    c'est en c++ et la dimension c'est tjrs 5*5. sinon je suis debutante donc je ne sais pas par quoi commencer si tu peux me donner une precision .merci
    draibins, 3 Avril 2012
    #3
  4. Offline
    DeflaMental [-_-]
    Si tu connais pas du tout le C++, commence pas l'apprendre avec des trucs de base :
    http://www.siteduzero.com/tutoriel-3-11406-programmez-avec-le-langage-c.html

    Ensuite pour ton truc, une méthode bête est de déclarer un tableau :

    int tableau[5][5];

    et puis tu rempli chaque élément dans l'ordre avec des cin

    cin>> tableau[3][3]
    cin>> tableau[3][2]
    .....

    Mais j'ai du mal à voir l'utilité de l'application

    Ps : merci aux autres de corriger car ça fait trop longtemps que j'ai plus fait du C, donc possibilité que je confonde des codes :p
    DeflaMental, 3 Avril 2012
    #4
  5. Offline
    draibins Touriste
    merci pour ta reponse. si je connais un peu le langage enfin je me debrouille je peux travailler avc des fonctions j'ai aussi fait des programme sur les chaine de caractere et les classe mais ca n'empeche je vais me documenter . en ce qui concerne l'utilité alors ca c'est un defi du prof c'est a dire au lieu de remplire une matrice carré en spirale

    1 2 3 4 5
    16 17 18 19 6
    15 24 25 20 7
    14 23 22 21 8
    13 12 11 10 9
    ON LE REMPLI en commencant du centre voila
    draibins, 3 Avril 2012
    #5
  6. Offline
    Skarbone I would rather be snowboarding
    Remplir les cases avec un ordre codé "en dur", ca me parait spécialement incohérent et totalement inutile.. Quel serait l'intéret ?

    Il est évident qu'il faut un algorithme qui fonctionne tout aussi bien même si le carré fait 10*10 ou 3*3...
    Skarbone, 3 Avril 2012
    #6
  7. Offline
    deNje Adm¡n
    un défi donné par un prof, pas besoin d'avoir une utilité, c'est juste pour apprendre à coder.
    deNje, 3 Avril 2012
    #7
  8. Offline
    Skarbone I would rather be snowboarding
    Je sais, merci. L'utilité du défi est claire, ce que je dis c'est que le résoudre en hardcodant les valeurs pour un tableau de 5*5 ca ne présente aucun intéret. La prochaine fois, essaye de lire ce que j'écris :D

    (edit: je commence a cherche une solution :D)
    Skarbone, 3 Avril 2012
    #8
  9. Offline
    deNje Adm¡n
    De rien, si t'as besoin d'autre chose, tu sais où me trouver ;)
    deNje, 3 Avril 2012
    #9
  10. Offline
    Skarbone I would rather be snowboarding
    Toujours aussi con :)


    edit: a priori ca devrait marcher. Je lance netbeans pour vérifier. Ceci dit c'est un premier jet et tout n'est pas très propre donc même si ca marche revoit un peu le code quand même :D

    http://pastie.org/3721770

    re-edit: merde j'ai plus netbeans ici :colere:
    Skarbone, 3 Avril 2012
    #10
  11. Offline
    DeflaMental [-_-]
    Oué c'est ce que je pensais, maintenant c'est pas non plus ultra trash pour toutes les dimensions.

    Déjà faut des tailles impaires i, et pour trouver l'élément milieu, bah tu fais (i+1)/2
    Ensuite, pour le 2 ème élément, tu fais -1 sur la ligne, etc...

    Fin ça reste séquentiel, mais je vois pas comment faire ça avec une boucle :p

    EDIT : je viens de voir ton code, malade va :love:
    DeflaMental, 3 Avril 2012
    #11
  12. Offline
    draibins Touriste

    je vais verifier et je te dis quoi merci
    draibins, 3 Avril 2012
    #12
  13. Offline
    Skarbone I would rather be snowboarding
    a priori mon code devrai* fonctionner même pour un tableau de taille paire, comme je l'ai dit y'a ptet quelques modifications a faire vu que le code n'est pas testé. Pas oublier de virer la partie décimale de la taille, comme je l'ai écrit... En java ca passerait (5/2 = 2 si on utilise un int), mais en PHP par exemple ca ne marcherait pas trop :D

    Pour le code, la premiere chose a faire, c'est d'écrire a la main l'escargot. Tu vois rapidement que tu dois faire:

    - 1 pas vers le haut
    - 1 pas vers la gauche
    - 2 pas vers le bas
    - 2 pas vers la droite
    - 3 pas vers le haut
    - 3 pas vers la gauche
    - 4 pas vers le bas
    - 4 pas vers la droite

    [...]

    Donc tu vois que

    - tu enchaines les directions dans l'ordre haut, gauche, bas, droite,
    - Tu fais 2 fois le même nombre de pas, avant d'augmenter le nombre de pas de 1.

    A partir de la, faut réussir a le transposer en code quoi..
    Skarbone, 3 Avril 2012
    #13
  14. Offline
    draibins Touriste
    par contre il fat initialiser posX et posY
    draibins, 3 Avril 2012
    #14
  15. Offline
    Skarbone I would rather be snowboarding
    ué mais non en fait posX et posY c'est posHauteur et posLargeur :D, jte dis, j'ai tappé ce code dans notepad donc :cool:
    Skarbone, 3 Avril 2012
    #15
  16. Offline
    draibins Touriste
    :D ok ok jte tiens au couurant merci en tt cas
    draibins, 3 Avril 2012
    #16
  17. Offline
    Skarbone I would rather be snowboarding
    http://pastie.org/3722016

    vala, le code marche et en prime t'as un affichage a chaque étape. Ca marche pour des tableau jusqu'a 99*99, au dela tu aura des problemes d'affichage m'enfin c'est dja largement suffisant :D.

    PS: la gestion de l'affichage est mal foutue hein, j'ai juste pas envie de trop me casser la tête pour ca.


    (bon, il plante a la derniere position, vu qu'elle existe pas, mais ca sera pas dur a régler)
    Skarbone, 3 Avril 2012
    #17
  18. Offline
    draibins Touriste
    merci. donc a kel niveau on affiche le tableau parceque si on l'affiche comme g fait :
    tableau[posHauteur][posLargeur] = aPlacer;
    cout<<tableau[posHateur][posLargeur];
    aPlacer ++;
    compteur2++;

    ca maffiche
    2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
    draibins, 3 Avril 2012
    #18
  19. Offline
    draibins Touriste
    oui je me demandais l'affichage je teste et jte repond ;-D
    draibins, 3 Avril 2012
    #19
  20. Offline
    Skarbone I would rather be snowboarding

    c'est la partie avec 2 for imbriqués. PS: j'ai modifié le lien de pastie, ca gerera mieux l'affichage avec ca :p
    Skarbone, 3 Avril 2012
    #20