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:
Merci de votre aide.
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; }
Partager