Vous êtes sur la page 1sur 3

#include<stdio.

h>
#include<malloc.h>
#include<string.h>
struct Commentaire
{
int IdVis;
char Mesg[50];
struct Commentaire *pre, *svt;
};
typedef struct Commentaire Commentaire;

void NouveauCommentaire(Commentaire **T, int IdVis, char message[50])


{
Commentaire *e, *p;
e=(Commentaire*)malloc(sizeof(Commentaire));
e->IdVis=IdVis;
strcpy(e->Mesg,message);
e->svt=NULL;
if (*T == NULL)
{
e->pre=NULL;
*T=e;
}
else
{
for(p=*T; p->svt;p=p->svt);
p->svt=e;
e->pre=p;
}
}

void NouveauxCommentaires (Commentaire **T)


{
int id;
char M[50];
do {
do {
printf("donner Id du visiteur : ");
scanf("%d", &id);
} while (id <=0);

do {
printf("donner le message : ");
fflush(stdin); gets(M);
} while (!strlen(M));
NouveauCommentaire(T,id,M);
do{
printf("Taper: 1 : nouveau message\n \t2 : quitter \n" );
scanf("%d", &id);
}while (id !=1 && id !=2);
}while (id ==1);
}

void AfficherTousCommentaires (Commentaire *T)


{
int rep;
Commentaire *s ;
if(T)
{
do {
printf("\n Visiteur %d : %s", T->IdVis, T->Mesg);
do {
if (T->svt) printf("\n 1 : afficher le commentaire suivant ");
if (T->pre) {
printf("\n 2 : afficher le commentaire precedent");
printf("\n 3 : supprimer le commentaire en cours");
}
printf("\n 4 : Quitter");
printf("\n taper votre choix : ");
scanf("%d",&rep);
} while (!((rep==4 && T->pre)|| rep==3 || (rep==2 && T->pre)||(rep==1 &&T->svt)));
switch(rep)
{
case 1: T=T->svt;break;
case 2: T=T->pre;break;
case 3:
s=T->pre ;
s->svt=T->svt;
if (T->svt) T->svt->pre=s;
free(T);
T=s;
break;
}
}while (rep !=4);
}
}

Commentaire * suiv(Commentaire *T , int IdVis)


{
while (T && T->IdVis != IdVis) T=T->svt;
return T;
}

Commentaire * pres(Commentaire *T , int IdVis)


{
while (T && T->IdVis != IdVis) T=T->pre;
return T;
}

void GererCommentairesVisiteur (Commentaire *T ,int IdVis)


{
Commentaire *s;
int rep, nb=1;
T=suiv(T, IdVis);
while(T)
{
printf("\n commentaire %d : %s", nb, T->Mesg);
s=suiv(T->svt, IdVis);
do
{
if (s) printf("\n 1 : afficher le commentaire suivant");
if (T->pre&&nb!=1) printf("\n 2 : afficher le commentaire precedent");
if (T->pre )printf("\n 3 : supprimer le commentaire en cours");
printf("\n 4 : Quitter");
printf("\n taper votre choix : ");
scanf("%d",&rep);
}while (!(rep==3 || rep==4 ||(rep==2 && T->pre&& nb!=1)||(rep==1 &&s)));
switch(rep)
{
case 1: T=s;nb++; printf("\n jj");break;
case 2: T=pres(T->pre, IdVis); nb--; break;
case 3: if (nb!=1)
{ s=pres(T->pre, IdVis); nb--;
}
else s=suiv(T->svt, IdVis);
T->pre->svt=T->svt;
if (T->svt) T->svt->pre=T->pre;
free(T);
T=s;
break;
default: T=NULL;
printf("\n yy");
}
}

}
int main()
{
Commentaire *T=NULL;
NouveauxCommentaires(&T);
AfficherTousCommentaires(T);
return 0;
}

Vous aimerez peut-être aussi