Matrice spirale (langage C)

Discutez d'informatique ici !
Supernova
Membre Relatif
Messages: 224
Enregistré le: 20 Déc 2011, 00:33

Matrice spirale (langage C)

par Supernova » 19 Oct 2012, 00:16

Salut à tous!
Avez-vous une idée comment écrire une fonction qui affiche la matrice spirale d'un chiffre k entré au clavier?
Exemple:

k=2
4 3
1 2

k=5
21 22 23 24 25
20 7 8 9 10
19 6 1 2 11
18 5 4 3 12
17 16 15 14 13



homeya
Membre Relatif
Messages: 218
Enregistré le: 05 Mar 2012, 11:20

par homeya » 19 Oct 2012, 10:48

Bonjour,

Cela devrait être possible avec un tableau à deux entrées en le remplissant de 1 jusqu’à k en incrémentant/décrémentant correctement ses indices.

Cordialement.

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 13:00

par fatal_error » 19 Oct 2012, 20:20

Hello,


qqch dans le genre
Code: Tout sélectionner






td{
  width:15px;
}



function getSpiraleMatrix(n){
  var nbCells = n*n;
  var x=Math.floor(n/2);
  x-=(x*2==n);
  var y=x;
  var m=[];
  for(var i=0;i';
  for(var i=0;i';
    for(var j=0;j'+m[i][j]+'';
    }
    str+='';
  }
  str+='';
  return str;
}
window.onload=function(){
  document.getElementsByTagName('form')[0].onsubmit=function(e){ 
    try{
      var n=parseInt(document.getElementById('dimension').value, 10);
      var m=getSpiraleMatrix(n);
      var str=matrixToStr(m);
      document.getElementById('output').innerHTML=''+str+'';
    }catch(e){
      console.log(e);
    }
    e.preventDefault();
    return false;
  }
};




 
 







l'idée c'est :
tu te places au milieu de la matrice.
Puis tu vas 1 vers la droite
puis 1 vers le bas.
puis 2 vers la gauche et 2 vers le haut
puis 3 vers la droite et 3 vers le bas
T'as compris, tu fais n step dans une direction, tu tournes, n step dans la nouvelle direction tu tournes
puis n+1 step dans la nouvelle direction, tu tournes, n+1 step dans la nouvelle direction
etc...

la condition d'arret, c'est quand t'as fait toutes les cases.

Il faut faire gaffe à l'initialisation, à savoir faut que tu te places de manière à ce que ta spirale ne sorte pas de ta matrice...

La direction est donnée par un vecteur directionX, directionY, et la rotation par la matrice
[0,-1; 1,0] ou [0,1;-1,0]
la vie est une fête :)

Supernova
Membre Relatif
Messages: 224
Enregistré le: 20 Déc 2011, 00:33

par Supernova » 19 Oct 2012, 21:03

Merci homeya et fatal_error pour l'aide, je crois que j'ai maintenant une idée pour réaliser ce programme.
Bonne soirée :)

 

Retourner vers ϟ Informatique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 7 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite