slt tout le monde,j'ai vraiment un enrome problème dans le tri de ma liste chainée,ya aucune erreur dans la compilation mais la liste n'est trièe,en fait le prog me trie juste les 3 premiers elements et il m'affiche deux 0 en + des trois element bien entendu,car j'ai 5 element dans la chaine.
voila je vous explique le prog:il s'agit d'appliquer les algorithme d'ordonencement d'un OS(tourniquet,FCFS...) sur des processus qui sont dans une liste chainés,j'ai 5 processus au totale.en fait j'ai testé bcp de methodes mais aucune n'a marché voila madernière methode ,il sagit de choisir le nombre minimum dans la liste puis l'inserer dans une autre liste chainées ainsi de suite...
voila le code source:
- include<stdio.h>
- include<conio.h>
- include<alloc.h>
- include<stdlib.h>
struct proc
{
int code;
int da;
int te;
int pri;
proc *suiv;
};
///////FONCTION d'acceuil///////
char MenuG(void)
{ char ch;
window(1,1,80,1);textbackground(15);clrscr();textc
olor(1);
gotoxy(30,1);cprintf("GESTION DES POLYNOMES");
window(1,2,80,25);textbackground(0);clrscr();textc
olor(1);
gotoxy(10,5); printf("ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿");
gotoxy(10,6); printf("³ ³");
gotoxy(10,7); printf("³ MENU PRINCIPALE ³");
gotoxy(10,8); printf("³ ³");
gotoxy(10,9); printf("³ <1> CREER UN PROCESSUS ³");
gotoxy(10,10);printf("³ <2> APPLIQUER LES ALGORITHMES ³");
gotoxy(10,11);printf("³ <3> COMPARAISON ³");
gotoxy(10,12);printf("³ <ESC>QUITTER ³");
gotoxy(10,13);printf("ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
ÄÄÄÄÄÄÄÄÙ");
gotoxy(10,14); printf("ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿");
gotoxy(10,15); printf("³ Votre Choix : ³");
gotoxy(10,16); printf("ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ");
gotoxy(35,15);ch=getche();clrscr();
return ch;
}
void main()
{char chg;
int i,k,h,j;
proc *prem,*n,*prec,*p,*min,*premier,*l,*l2;
clrscr();
do{
chg=MenuG();
switch(chg)
{
case '1':
prem=(proc *)malloc(sizeof(proc));
prem->code=1;
prem->da=random(6-1);
prem->te=random(8-1);
prem->pri=random(5-1);
prem->suiv=NULL;
for(i=0;i<4;i++)
{
n=(proc *)malloc(sizeof(proc));
n->code=i+2;
n->da=random(6-1);
n->te=random(8-1);
n->pri=random(5-1);
n->suiv=prem;
prem=n;
}
/*TRI par date d'arriv‚*/
for(i=0;i<4;i++)
{
min=p=prem;
p=p->suiv;
for(j=0;j<4-i;j++)
{
if(min->da>p->da)
{
min=p;
}
p=p->suiv;
}
if(i==0)
{
l=(proc *)malloc(sizeof(proc));
l->code=min->code;
l->da=min->da;
l->te=min->te;
l->pri=min->pri;
l->suiv=NULL;
}
else
{
l2=(proc *)malloc(sizeof(proc));
l2->code=min->code;
l2->da=min->code;
l2->te=min->te;
l2->pri=min->pri;
l2->suiv=l;
l=l2;
}
}
for(i=0;i<5;i++)
{
printf("\n %d",(l)->da);
l=l->suiv;
}
break;
case '2':
printf("\n appliquation");
break;
case '3':printf("comparaison");
}
getch();
}while(chg!=27);
}
ET MERCI POUR VOS REPONSES!!
vraiment ça serait synpa pour celui qui va m'aider car je dois rendre le mini projet le lundi.