Bonsoir à tous!Voilà,je veux à partir de n chiffres donnés donner les arrangements possibles (n! arrangements).Dans mon code,j'ai utilisé une matrice où j'ai placé les arrangements.A présent,j'ai pas traité les 2 dernières colonnes de la matrice correctement mais peu importe pour le moment ce n'est pas mon soucis.Voilà ce qui est affiché:
Pour le moment ,ne vous interresser pas à la dernière et avant dernière colonne.Comme vous le constater,le '1' disparait aprés avoir entamer à écrire les arrangements qui commencent par '3'.S'il vous plait dites moi où se trouve mon erreur.Code:
1
2
3
4
5
6
7
8
9
10
11
12 Donner le nombre n 4 Donner le 1er ÚlÚment 1 Donner le 2eme ÚlÚment 2 Donner le 3eme ÚlÚment 3 Donner le 4eme ÚlÚment 4 1234-1244-1323-1343-1434-1444-2134-2144-2334-2344-2434-2444-3234-3244-3334-3344- 3434-3444-4234-4244-4334-4344-4434-4444-Press any key to continue
voilà 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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99 #include<stdio.h> void main() { int fact(int n),n,t[100],a[100],v[1000][100],i,k,l,x,nb; do { printf("Donner le nombre n\n"); scanf("%d",&n); } while(n>100); for(i=0;i<n;i++) { printf("Donner le %d%s élément\n",(i+1),(i)?"eme":"er"); scanf("%d",&t[i]); } /*copie du tableau initial*/ for(i=0;i<n;i++) a[i]=t[i]; /*les colonnes de la matrice*/ for(k=0;k<n;k++) { l=0; i=k; while(l<fact(n) && i<n) { /*remplir les lignes de la matrice */ for(nb=0;nb<fact(n-k-1);nb++) { v[l][k]=a[k]; l++; } if(i<n-1) { x=a[k]; a[k]=a[i+1]; a[i+1]=x; } if(i==(n-1)) { x=a[k]; a[k]=a[n-1]; a[n-1]=x; } if(v[l-1][k]==a[n-1] && k>0) { /*mise à zéro(se référer au tableau initial)*/ for(nb=0;nb<fact(n-k-1);nb++) { v[l][k]=a[k]; l++; } for(i=k;i<n;i++) a[i]=t[i]; /*fin de la mise à zéro*/ x=a[k-1]; a[k-1]=*(a+k); *(a+k)=x; i++; i=k-1; } i++; } /*mise à zéro(en passant d'une colonne à l'autre)*/ for(i=0;i<n;i++) a[i]=t[i]; } /*affichage*/ for(i=0;i<fact(n);i++) { for(k=0;k<n;k++) printf("%d",v[i][k]); printf("-"); } } int fact(int n) { int i,f=1; for(i=1;i<=n;i++) f=f*i; return f; }