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
   | #include<stdio.h>
void main()
{
	int fact(int n),n,t[100],a[100],v[1000][100],i,j,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];
[code]	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];
 
 
 
	}[/code] | 
Partager