Création d'une spirale et modifications
Bonjour,
Pour un exercice nous avons du réaliser une spirale dans le terminal de n*n nombres. Pour que vous compreniez mieux voici un exemple avec 5:
17 16 15 14 13
18 5 4 3 12
19 6 1 2 11
20 7 8 9 10
21 22 23 24 25
J'ai trouvé comment faire sauf que, petit problème: la spirale ne tourne pas dans le bon sens! Pourriez vous m'aider afin d'obtenir le résultat si dessus.
Voici mon code:
Code:
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
| #include <stdio.h>
#include <stdlib.h>
int main (){
int n;
int x, y;
printf("\n");
printf("Choisissez une valeur (de 2 à 10 pour un meilleur résultat): ");
scanf("%d", &n);
printf("\n\n");
int coordinates[n][n];
/*Imaginez [n][n] comme coordonnées (n;n) == (x;y)
*où (0;1)= déplacement de 1 vers le haut
*où (1;0)= déplacement de 1 vers la droite
*où (-1;0)= déplacement de 1 vers la gauche
*où (0;-1)= déplacement de 1 vers le bas
*Tous les cas possibles pour cet exo sont cités
*/
for (x=0; x<n; x++){
for (y=0; y<n; y++){
if (x <= n/2){
if (y <= x)
coordinates[x][y] = (n-y*2)*((n+1)-(y+1)*2) + 1 - (x-y);
else if (y <= n-x)
coordinates[x][y] = coordinates[x][y-1] + 1;
else
coordinates[x][y] = (n-y*2)*((n+1)-(y+1)*2) + 1 - (y-x);
}
else{
if (y < n-x)
coordinates[x][y] = (n-y*2)*((n+1)-(y+1)*2) + 1 - (x-y);
else if (y < x)
coordinates[x][y] = coordinates[x][y-1] - 1;
else
coordinates[x][y] = (n-y*2)*((n+1)-(y+1)*2) + 1 - (y-x);
}
printf("%3d", coordinates[x][y]);
}
printf("\n");
}
return 0;
} |
Merci de votre aide. :D