Bonsoirs tous le monde ,je veux séparer une pile contiguë en deux parties parties une partie pour les éléments positives ou nuls et une autre partie des éléments négatives mais le problème de mon programme ne le fais pas même si j'ai fais une procédure pour séparer mais sa ne marche pas de plus se que je veux savoir si mon problème et dans le main ou la procédure separation ?donc s'il vous plais il me faut de l'aide .merci d'avance
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
100
101
102
103
104
 
#include<stdio.h>
 
typedef struct{
	int T[100];
	int sommet;
}pile;
 
void inisialiserP (pile *p)
{
	p->sommet=-1;
}
 
void empiler(pile *p,int e)
{
	if(p->sommet==99)
	{
	printf("la pile est pleine");
	}
	else
	{
		p->sommet++; 	
	     p->T[p->sommet]=e;	 
	}
 
}
 
void depiler(pile *p)
{
	if(p->sommet!=-1)
	{
		p->sommet--;
	}
	else
	{
		printf("La pile est vide !");
	}
}
 
int  pile_pleine(pile *p )
{
	if(p->sommet=p->sommet-1) return 1;
	else return 0;
 
}
 
int pile_vide(pile *p)
{
	if(p->sommet==-1) return 1;
	else return 0;
}
 
void separation(pile *p, pile *p1, pile *p2)
{
	 int i;
    inisialiserP(p1);
    inisialiserP(p2);
 
        for(i=0 ;i<p->sommet ;i++)
		{
        if(p->T[p->sommet]>=0) empiler(p1,p->T[p->sommet]) ;
        else empiler(p2,p->T[p->sommet]);
        depiler(p);
        }
}
 
main()
{
	pile p,p1,p2;
	int i,n,e;
 
	inisialiserP(&p1);
    inisialiserP(&p2);
 
    inisialiserP(&p);   
	printf("Donner le nombre des elements a inserer dans la pile: ");
	scanf("%d",&n);
 
	for(i=0;i<n;i++)
	{
		printf("t[%d]=",i);
		scanf("%d",&e);
		empiler(&p,e);
	}
 
	printf("---La pile apres inserssion---\n");
	for(i=0;i<n;i++)
	{
		printf("p.T[%d]=%d\n",i,p.T[i]);
	}
 
    separation(&p,&p1,&p2);
    printf("---Separation---:\n");
    printf("la pile p1 qui contient les elements positifs ou nuls de p:\n");
    for(i=0;i<p1.sommet;i++)
	{
        printf("p1.T[%d]=%d \n ",i,p1.T[i]);
    }
    printf("la pile p2 qui contient les elements negative de p:\n");
    for(i=0;i<p2.sommet;i++)
	{
        printf("p2.T[%d]=%d \n ",i,p2.T[i]);
    }
}