Bonsoir à tous! Encore avec mon programme de combinaisons formés avec n chiffres.Il marche très bien avec des chiffres differents.Mais lorsqu'on fait entrer des chiffres qui se répétent ,mon programme plante.
S'il vous plait dites moi qu'est-ce qui cloche:
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
 
#include<stdio.h>
#include<stdlib.h>
int fact(int n);
void main()
{
 
	int t[100],m[1000][100],i,j,aux,different,stop,ligne,n;
 
 
	do
	{
		printf("Donner le nombre d'entiers à entrer:\n");
		scanf("%d",&n);
	}
	while(n<=0 || n>100);
		printf("Le nombre de combinaisons est %d\n",fact(n));
	for(i=0;i<n;i++)
	{
		printf("Donner le %d%s element ",(i+1),(i)?"eme":"er");
		scanf("%d",&t[i]);
 
 
	}
 
	ligne=0;
		do
		{
		/*générer un nouveau tableau T*/
		i=rand()%n;
		do
		{
			j=rand()%n;}
		while(i==j);
		if(t[i]!=t[j])
		{
		aux=t[i];
		t[i]=t[j];
		t[j]=aux;
		}
		/*chercher T dans la matrice m*/
		j=0;stop=0;
		while(j<ligne && stop==0)
		{	different=0;
			i=0;
			while(i<n && different==0)
			{	
				if(t[i]!=m[j][i])
					different=1;
				else
					i++;
			}
			if(different==1)
				j++;
			else
				stop=1;
		}
 
 
		if(stop==0)
		{
			/*ajouter t dans m*/
			for(j=0;j<n;j++)
				m[ligne][j]=t[j];
				ligne++;
		}
 
 
		}
		while(ligne<fact(n));
 
 
	/*affichage des combinaisons*/
	for(j=0;j<fact(n);j++)
	{
		for(i=0;i<n;i++)
			printf("%d",m[j][i]);
		printf("-");
	}
}
int fact(int n)
{
	int i;int f;
	f=1;
	for(i=1;i<=n;i++)
		f=f*i;
	return f;
}