Académique Documents
Professionnel Documents
Culture Documents
DONNEES 2
Projet Fin d’etude
Réalisé par :
EL HOUSSNI Abir
OULEDLACHHEB Safae
Encadré par:
Classe: 2AP7
1
REMERCIEMENT
2
SOMMAIRE :
Introduction générale:
1. Introduction du chapitre
2. Objectif du projet
3. Analyse des questions et proposition
4. Compilation
1. Introduction du chapitre
2. Objectif du projet
3. Analyse des questions et proposition
4. Compilation
1. Introduction du chapitre
2. Objectif du projet
3. Analyse des questions et proposition
4. Compilation
Conclusion générale
Bibliographie
Annexes
3
INTRODUCTION GENERALE :
4
Chapitre I : Gestion d’une file d’attente d’un musée
1. Introduction du chapitre
2. Objectif du projet
3. Analyse des questions et proposition
4. Compilation
5
Chapitre I : Gestion d’une file d’attente d’un musée
1. Introduction du chapitre:
On s’interesse dans ce chapitre a représenté une
file d’attente devant un musée par la structure d’une
file simple (à un seul pointeur).
Un individu dans la file est représenté par un numéro
(entier), si un nouvel individu aperçoit dans la file un
ami alors il se joint à lui pour attendre. Deux amis
seront alors deux entiers identiques.
2. Objectif du projet :
L’objectif de ce projet est de programmer un programme qui
pourra gerer une file d’attente d’un musee. Pour ce faire, nous
allons proposez une structure de données permettant de gérer
une telle file. Puis ecrire une fonction Ajouter permettant
d’ajouter un individu à la file , une fonction Supprimer
permettant de supprimer la tête de cette file et enfin une
fonction pour afficher ses éléments .
6
3. Analyse des questions et proposition :
7
b. Écrire une fonction Ajouter permettant d’ajouter
un individu à la file :
8
c. Écrire une fonction Supprimer permettant de
supprimer la tête de la file (la fonction retourne la
file moins l’élément supprimé)
9
d. Écrire une fonction récursive permettant
d’afficher les éléments de la file dans leur ordre
d’arrivée :
10
e. Tester les différentes fonctions dans la main :
11
12
4. Compilation :
a.console :
13
Le choix de l’utilisateur :
b. ajouter un individu a la file :
14
Chapitre II : Gestion d’une Liste circulaire sentinelle
1. Introduction du chapitre
2. Objectif du projet
3. Analyse des questions et proposition
4. Compilation
15
Chapitre II : Gestion d’une Liste circulaire sentinelle
1. Introduction du chapitre:
2.objectif du projet :
16
Le but de ce projet est de realiser un programme qui
permetterai de gerer une liste circulaire sentinelle. Pour
cela, nous allons :
17
a. Ecrire la fonction adPremiere qui crée la liste et
insère la sentinelle à la liste :
18
b. Ecrire la fonction ajouterEnTete qui insère
l’élément passé en paramètre en tête de liste.
19
On declare encore une fois lsentinelle, puis on ajoute
une valeur en queue et on retourne apres cette
lsentinelle.
20
La fonction taille_Liste prend comme par parametre une liste
k et retourne sa taille en l’incrementant.
21
f. Tester les différentes fonctions dans la main :
22
23
4.Compilation :
a.Console : (main)
24
b. créer la liste :
25
d.ajouter en queue de la liste :
f. Retourner la taille :
g. Afficher la liste :
26
Chapitre III: Gestion de conversion décimal en binaire à l’aide
d’une pile
1.Introduction du chapitre
2.Objectif du projet
3.Analyse des questions et proposition
4.Compilation
27
Chapitre III: Gestion de conversion décimal en binaire à l’aide
d’une pile
1. Introduction du chapitre :
Pour passer du décimal au binaire, on effectue des
divisions successives du nombre à convertir sur 2 jusqu’à
obtenir un quotient nul. Puis on constitue le nombre
binaire correspondant en lisant la suite des restes (0 et 1)
de bas en haut com l’indique l’exemple ci-contre : (34)2
=(100010)10
2. Objectif du projet :
28
L’objectif de ce problème est d’écrire une application en
langage C permettant une conversion du décimal vers le
binaire en utilisant une pile d’entiers .
Le principe est d’empiler les restes successifs de la division du
nombre décimal sur 2, ainsi, le dernier reste se sera le sommet
de la pile.
29
On a ajouter un entier dans la pile
30
d.. Écrire une fonction qui affiche le contenu de la
pile :
31
4.Compilation :
32
On constate que le projet est executable.
a. Console :
34
Les langages de programmation permettent de décrire
d'une part les structures des données qui seront
manipulées par l'appareil informatique, et d'autre part
d'indiquer comment sont effectuées les manipulations,
selon quels algorithmes. Ils servent de moyens de
communication par lesquels le programmeur
communique avec l'ordinateur, mais aussi avec d'autres
programmeurs ; les programmes étant d'ordinaire écrits,
lus, compris et modifiés par une équipe de
programmeurs.il est mis en œuvre par un traducteur
automatique : compilateur ou interprète. Un compilateur
est un programme informatique qui transforme dans un
premier temps un code source écrit dans un langage de
programmation donné en un code cible qui pourra être
directement exécuté par un ordinateur, à savoir un
programme en langage machine ou en code
intermédiaire, tandis que l’interprète réalise cette
traduction à la volée .
Le logiciel Dev-C++ est un environnement de
développement intégré permettant de programmer en
C/C++. Il utilise la version MinGW du
compilateur GCC (venu du monde du logiciel libre) et
permet d'exporter ses projets sous fichiers .dev.
35
Le compilateur Dev-C++ est assez complet. Il comprend
entre autre un "répoitre de classes", un "répertoire de
fonctions incluses", et un débogueur qui permet de
surveiller l'état des variables pendant l'exécution du
programme. L'avantage de Dev-c++, c'est qu'il est
multiplateforme. Il permet de générer des exécutables
fonctionnels sous la majorité des plateformes. L'outil de
développement Dev-c++ peut être très pratique. Il est
important de savoir s'en servir efficacement, c'est
pourquoi dans cette section sont disponible des tutoriaux
pour savoir l'utiliser correctement.
ANNEXE :
36
Chapitre I : Gestion d’une file d’attente d’un musée
#include <stdio.h>
#include <stdlib.h>
typedef struct musee{
int numero;
int occurrence;
struct musee *suivant;
}musee, *file;
file Ajouter_indiv(int numero,file f)
{
file f1,f2=f;
f1=(file)malloc(sizeof(musee));
while(f2!=NULL)
{
if (f2->numero==numero){
f2->occurrence=f2->occurrence+1;
return f;
37
}
f2=f2->suivant;
f1->numero=numero;
f1->occurrence=1;
f1->suivant=f;
return f1;
}
file Supprimer_tete(file f) {
if(f==NULL)
return NULL;
if(f->suivant==NULL)
{
free(f);
return NULL;
}
file f1=f ;
file f2;
38
while (f1->suivant->suivant!=NULL) {
f1=f1->suivant;
}
f2=f1->suivant;
f1->suivant=NULL;
free(f2);
return f;
}
void Afficher_ordre(file f)
{
while(f!=NULL)
{
printf("| %d | %d | ->",f->numero,f->occurrence);
f=f->suivant;
}
printf("NULL\n");
39
}
int main(){
file f=NULL;
int x,n;
f=Ajouter_indiv(4785,f);
f=Ajouter_indiv(4229,f);
f=Ajouter_indiv(2546,f);
f=Ajouter_indiv(7425,f);
f=Ajouter_indiv(3254,f);
f=Ajouter_indiv(7425,f);
f=Ajouter_indiv(1524,f);
printf("entrez le numero de l'individu:");
scanf("%d",&x);
fflush(stdin);
if(f->numero==x){
f->occurrence++;
f=Ajouter_indiv(x,f); }
else
f=Ajouter_indiv(x,f);
40
fflush(stdin);
do{
printf("Menu:\n");
printf("------------------------------------\n");
printf("Pour quitter: 0 \n");
printf("Pour ajouter un element :1 \n");
printf("Pour supprimer :2 \n");
printf("Pour afficher :3 \n");
printf("------------------------------------\n");
fflush(stdin);
printf("Quel est votre choix:");
scanf("%d",&n);
switch(n){
case 1: Ajouter_indiv(x,f);
printf("la file est:\n");
Afficher_ordre(f);
fflush(stdin);
break;
case 2:Supprimer_tete(f);
41
printf("la file apres la supression de la tete : \n ");
f=Supprimer_tete(f);
Afficher_ordre(f);
fflush(stdin); break;
case 3:Afficher_ordre(f); break; }
fflush(stdin);
}while(n!=0);
return 0; }
#include<stdio.h>
42
#include<stdlib.h>
typedef struct cellule {
int valeur;
struct cellule *suivant;
}cellule, *liste;
liste ad_premier(){
liste Sentinelle ;
Sentinelle=(liste)malloc(sizeof(cellule));
Sentinelle->suivant=Sentinelle;
return Sentinelle ;
}
break;
}
47
}while(n!=0);
return 0;}
#include <stdio.h>
#include <stdlib.h>
48
#include<string.h>
typedef struct cellule{
int valeur;
struct cellule *precedent;
}cellule, *pile;
pile p1=(pile)malloc(sizeof(cellule));
p1->valeur=v;
p1->precedent=p;
return p1;
}
49
}
}
else{
x=val;
do{
p=empiler(x%2,p);
x=x/2;
}while(x!=0);
}
50
return p;
}
main(){
pile p= NULL;
int x;
do{
}while(x<=0);
printf("\t\t*Le nombre (%d)base:10 correspond a (",x);
p=conversion(x);
AffPile( p);
printf(")base:2 apres la conversion*");}
51
CONCLUSION GENERALE :
52
BIBLIOGRAPHIE :
http://www.apt-dev.com/gestion_des_impressions.html
RAPPORT PFA
53
54