J'ai un probleme en c++ avec les liste chainé

walidos09 Messages postés 5 Date d'inscription dimanche 19 décembre 2004 Statut Membre Dernière intervention 24 décembre 2004 - 20 déc. 2004 à 16:22
walidos09 Messages postés 5 Date d'inscription dimanche 19 décembre 2004 Statut Membre Dernière intervention 24 décembre 2004 - 24 déc. 2004 à 01:09
/*
l'ennoncé de mon projet :

on désire concevoir par l'approche objet, une application pour simuler
le fonctionnement du noyau du systéme le fonctionnement du noyau du systéme
d'exploitation permettant d'executer les différentes tâches qui se présentent au syéstéme .
pour chaque tâche présentée, un processus est crée.il est identifié par un code unique,
son nom, l'instant de son arrivée, son état (actif ou en attente) , sa priorité, le temps d'exécution demandé sur le processeur
et le temps consommé.

plusieurs types d'ordonnancement sont possibles (fifo, lifo, par priorité, par quantum de temps ...).Pour chacun de ces types,
on put associer un objet ordonnanceur qui simule l'execution des processus selon l'algorithme approprié.


on demande de:

1- canccevoir une classe Processus en imaginant tous les services possibles de creation,suppression , affichage , modification , ect...

2- concevoir une classe ordonnanceur intégrant les services permettant de simuler l'execution selon l'algorithme choisi .

3- proposer un programme permettant de simuler l'exécution d'une liste de processusselon un algorithme choisi d'ordonnancemant et d'afficher a chaque instant l'évolution de l'exécution.

4-imaginer et proposer une classe dérivée processus_specifique pour gérer certaines tâches spécifiques et proposer un programme
manipulant des objets polymorphes.

nb:les processus sera traité par des listes chainés.

*/
/* programme en c++ */

#include
#include<stdio.h>
#include <conio.h>
#include<string.h>
#include<dos.h>
#include<stddef.h> //POUR NULL
#define ESC '\33'

struct process{
int code,prio,intar,tpsex,tpscon;
char nom[],etat;
};

struct element{
element *suiv;
process val;
};
/*************************/

class processus
{
element *debut; //pointeur sur premier element
element *cur;
friend class ordonnanceur;
public:

static int nb;
processus();
processus(int);
~processus();
void creation(int);
void suppression(int);
void modification(int);
void affiche();
};

element processus::*cur=0;
int processus::nb=0;

processus::processus()
{
/*debut=NULL; //constructeur
cur=debut; */
}

processus::processus(int n)
{
cur=new element[n];
}
processus::~processus()
{
delete[]cur;
}

void processus::creation(int n)
{
int i;
debut=NULL;
cur=debut;
for(i=0;i<n;i++)
{
cur=new element;
cout<<endl<<"p : "<suiv=debut;
cprintf("donner le code de processus : ");cin>>cur->val.code;
cprintf("donner le nom de processus : ");cin>>cur->val.nom;
cprintf("donner l'instant d'arriver : ");cin>>cur->val.intar;
cprintf("donner le temps d'execution : ");cin>>cur->val.tpsex;
cprintf("donner son priorite : ");cin>>cur->val.prio;
debut=cur;

};

}

void processus::suppression(int f)
{element *p=debut,*q;q=p;
while(p)
{
if(p->val.code!=f)
q=p;p=p->suiv,
q->suiv=p->suiv,
delete(p);
}
;
}

void processus::modification(int m)
{
int i;
while(cur!= NULL)
if(cur->val.code=m)
{
cprintf("donner le nouveau code de processus :");cin>>cur->val.code;
cprintf("donner le nouveau nom de processus :");cin>>cur->val.nom;
cprintf("donner the new instant d'arriver :");cin>>cur->val.intar ;
cprintf("donner the new temps d'execution :");cin>>cur->val.tpsex;
cprintf("donner son new priorité :");cin>>cur->val.prio ;
}
}

/******************************/

class ordonnanceur
{
friend class processus;
public:
processus l;
void ordonner(int,int);
friend processus::creation(int);
};

void ordonnanceur::ordonner(int k,int nb)
{
int i=0;
switch(k)
{
case 1 :
cout<<nb; //lifo
while(l.cur)
{cout<val.code<<endl;i++;
l.cur=l.cur->suiv;}
break;

case 2 :
for(i=0;i<nb;i++) //fifo
cout<<l.cur->val.code<<endl;break;
default:;
}
}
/***********************************/

void main()
{
processus x;ordonnanceur o;int w,b;

cprintf("donner le nombre de processus a traite : ");cin>>w;
x.creation(w);
clrscr();
gotoxy(3,3);cprintf("vous pouvez ordonner les processus inseré suivant les algorithmes : ");
gotoxy(3,7);cprintf("1 - lifo");
gotoxy(3,9);cprintf("2 - fifo");
do{
gotoxy(3,12);
cprintf("choisir le nombre correspondant a ton algorithme : "),cprintf(" "),cin>>b,cprintf(" ");
}
while((b!=1)&&(b!=2));clrscr();
o.ordonner(b,w);
getch();
}

4 réponses

cs_psycho Messages postés 232 Date d'inscription samedi 11 mai 2002 Statut Membre Dernière intervention 27 octobre 2007
20 déc. 2004 à 20:27
Ici, on fait pas le boulot des autres.
T attends quoi? Qu'on fasse tes études pour toi?
Personnellement je ne suis pas d'accord.
Je demande d'ailleurs si un admin lis ce poste qu'il le supprime purement et simplement.
Bonne soirée.

Psycho
0
cs_psycho Messages postés 232 Date d'inscription samedi 11 mai 2002 Statut Membre Dernière intervention 27 octobre 2007
20 déc. 2004 à 20:28
pardon : post et non pas "poste"

Psycho
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
20 déc. 2004 à 22:15
Lol sans lire ton commentaire, c'estl a réflexion que je me faisais.
0
walidos09 Messages postés 5 Date d'inscription dimanche 19 décembre 2004 Statut Membre Dernière intervention 24 décembre 2004
24 déc. 2004 à 01:09
comment en peut trié une liste chainée...
0
Rejoignez-nous