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é:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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.
voilà 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
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;
	}