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