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 : 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
#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.