Sunteți pe pagina 1din 9

Universit Abdel Malek Essaadi

Facult des
es sciences et techniques de Tanger

PARCOURS
MIPC II-1

MINI PROJET LANGAGE C

Ralis par :

Farid ELMASSMOUDI
Omayssa AZOUZI

Encadr par A.BOURZEK

Les Structures | Les Mthodes de Tri


2009-2010

FST Tanger

Dpartement Informatiques

Sommaire
Introduction................................................................................................................................... 2
1.

Sujet N1 : un rpertoire dadresses ........................................................................................... 3

1.1. Dfinition ............................................................................................. 3


1.2. Les structures de programme ................................................................ 3
1.3. Ajout dun contact .............................................................................. 4
1.4. Affichage de Liste des contacts.......................................................... 4
1.5. Rechercher un contact dans le rpertoire ......................................... 4
1.6. Modification ou Suppression dun contact ........................................ 5
2.

Sujet N2 : Gestion dun compte bancaire ................................................................................. 5

2.1. Dfinition ............................................................................................. 5


2.2. La structure de programme ................................................................ 5
2.3. La fonction Saisir et la fonction Afficher .......................................... 6
2.4. Les fonctions Lister les dbiteurs et Lister les comptes ................ 6
2.5. Les oprations sur les comptes .......................................................... 6

3.

2.5.1.

La fonction verser et la fonction retraiter ............................................................................ 6

2.5.2.

La fonction supprime et la fonction position ....................................................................... 6

Sujet 3 : Les mthodes de tri dans un tableau ........................................................................... 6

3.2. Tri par bull ........................................................................................... 7


3.3. Tri par insertion .................................................................................... 7
3.5. Tri par fusion ....................................................................................... 7

Conclusion ...................................................................................................................................... 8

F. ELMASSMOUDI O. AZOUZI

Page 1

FST Tanger

Dpartement Informatiques

Introduction
On dfinie dans ce mini projet la notion de la structure qui va
nous permettre de designer sous un seul nom un ensemble de
valeurs pouvant tre de types dfrents. On va utiliser la notion de
structure sous des formes diverses (en particulier les tableaux de
structure et leur initialisation, et aussi des structures sous des
formes simples).
On dfinie par typedef une nouvelle notion quon appelle en C
types synonyme qui sadresse au compilateur, il sert rendre le
programme plus lisible.
Enfin les fonctions avec des structure, et la transmission dune
structure en valeur de retour.
Aussi on propose ici des exemples de programmation classiques
ayant trait aux tris et en mme temps la fusion des tableaux (ici
les deux sous tableaux du mme tableau principal).

F. ELMASSMOUDI O. AZOUZI

Page 2

FST Tanger

Dpartement Informatiques

1. Sujet N1 : un rpertoire dadresses


1.1.

Dfinition

Un rpertoire est un ensemble des informations sur des contacts dont chaque
contact possde plusieurs informations comme le nom le prnom, adresse.
Pour classer les contacts on les stocker dans un tableau de structure.

1.2.

Les structures de programme

Une structure permet en C de regrouper au sein dune mme entit des


donnes de types diffrents (comme un tableau qui stocke des lments de
mme type).
Alors que les lments dun tableau sont rfrences `a laide dun indice, les
lments dune structure portent chacun un nom spcifique.
Ces lments sappellent les champs ou membres.sa syntaxe :
Struct nom structure
{
Type 1 variable 1;
Type variable ;
}

||
||
||
||
||

typedef struct
{
type 1 variable 1;
type variable ;
}
nomstructure;

La premier structure est appele Adresse ; voici sa dclaration :


typedef struct
{char pays [100], ville [100], rue [100];
long

numero_adresse,

Adresse;

code postale;

Lautre structure appele Contact est dclar comme suit :


typedef struct
{ char

nom [100], prnom [100], email [100];

long

tel domicile, gsm, phone entreprise ;

Adresse point;
}

Contact;

Cette dclaration fait intervenir un variable (point) de la modle (adresse) de la


structure prcdemment dfinie.
Remarque : dans toutes les parties de notre programme on va travailler avec une structure de type
contact nomme lve, et qui contient un variable nomm point de la structure adresse de contact.

F. ELMASSMOUDI O. AZOUZI

Page 3

FST Tanger

1.3.

Dpartement Informatiques

Ajout dun contact

En utilisant les fonctions on dfinie une fonction ajouter qui permet de saisir
tout les informations dun contact, cette fonction contient deux arguments, un
variable de modle contact, et un entier n qui reprsente le nombre des contactes
a ajouter, noter bien que cette fonction est de type v o i d, mais aussi on peut
nommer ce type contact. La fonction ajoute en langage C :
void AJOUT (contact lve)
{
int i;
for (i=0;i<n;i++)
printf (" Nom de contact : ") ;
scanf ("%s", eleve.nom) ;

1.4.

Affichage de Liste des contacts

Laffichage des informations saisies se fait par la fonction printf, pour les
structures le format dlment dans printf scrit comme suite :
Printf ( %s , eleve.nom) ; loperateur . nous permet daccder aux

champs de la structure lve. Pour afficher linformation de ladresse on crit :


Printf ( %s , eleve.point.pays) ; ou cette criture affiche le nom de

pays de point correspondant a la structure contact.

1.5.

Rechercher un contact dans le rpertoire

En C elle possible dutiliser un tableau de structure qui nous permet de savoir la


position des donne dans le rpertoire. Voici sa dclaration :
Typedef struct {
type i variable i ;

type variable ;

} contact lve [40] ;

Noter bien que contact est un nom de modle, tandis que lve est un tableau de
40 lments de type contact. La notation : lve[i].nom reprsente le nom de
contact de rang (position) i ; il sagit donc dune valeur de type char.
Donc pour chercher un contact on utilise les foncions : Consulter (Int indice) a
pour argument lindice de contact ; recherche (char nom) ; et la fonction
Re_Mul (char nom, char prnom,) plusieurs argument comme critres.
Dans les trois fonctions ; le principe cest de comparer les critres avec celles
contenu dans le tableau jusqu' trouver le contact recherch et lafficher.

F. ELMASSMOUDI O. AZOUZI

Page 4

FST Tanger

Dpartement Informatiques

void
{

RECHERCHE (contact lve [], char mot [])

Int i;

for(i =1; i<=*n; i++)

if (strcmp (lve[i].nom, mot)==0)


printf(

) ;

Remarque : la notation eleve.nom[i] na aucun sens. Or lexpression lve[i].point. Ville reprsente


le nom de ville de point correspondant le contact de rang i.

1.6.

Modification ou Suppression dun contact

La modification des information dun contact ncessite la suppression des


anciens informations, et les remplacer par les novelles donnes ;cette mthode
consiste a entrer directement les novelles donnes et les enregistrer dans les
adresse des anciens information en crasant ces derniers de contact a modifier .
void

MODIFIER (contact lve [], int indice,)

int i=1;

for (i=1; i<=*n; i++)

if (i==indice)

Printf (Nom de contact: ");


scanf ("%s", lve [indice].nom);

Pour supprimer un contact crasera le contact supprimer par dcrmenter la


structure contact, en suite on dcrmente le nombre des Contacts pour viter la
recopier deux foie dans le rpertoire. Voici la fonction Supprimer :
void SUPRIMER (contact lve [], char nom [])
{

Int i;

for (i=0; i< n; i++

if(strcmp(eleve[i].nom,nom)==0)
lve[i] =lve [i+1] ;

2. Sujet N2 : Gestion dun compte bancaire


2.1.

Dfinition

Cest un ensemble des informations stockes dans un tableau ou un fichier.


Pour ouvrir ce fichier on utilise un code appel numro de compte.

La structure de programme

2.2.
typedef struct
{

char

nom [100], prnom [100] ;

F. ELMASSMOUDI O. AZOUZI

Page 5

FST Tanger

Dpartement Informatiques

long num ;

double solde;
}

2.3.

Compte ;

La fonction Saisir et la fonction Afficher

La fonction saisie return les informations de la structure dclare localement au


sein de cette fonction.
Compte
{

int

SAISIR ()
i; compte

T;

Printf("le nom:") ;

scanf("%s",T.nom) ; ;

return T ; }

La fonction afficher est la mme comme dans le sujet 1precedant.

2.4.

Les fonctions Lister les dbiteurs et Lister les comptes

Pour lister les dbiteurs on utilise le numro de compte comme critre et ensuite
en fait lappel la fonction affiche pour montrer les infos correspond.
Or pour lister tous les comptes on na pas besoin de paramtre.

2.5.

Les oprations sur les comptes

2.5.1. La fonction verser et la fonction retraiter


Pour faire de virement ou de retrait on fait une soustraction ou une sommation sur le
solde de la structure compte correspondant le numro de compte choisi. Voici linstruction
qui ralise ces oprations :
t[i].solde=t[i].solde+solde;
t[i].solde=t[i].solde-solde;

2.5.2. La fonction supprime et la fonction position


La fonction positon return le rang i de compte choisi sil existe si non
return l. Pour la suppression cest la mme chose que le premier sujet.
If (t[i].num==num)

return (i);

else

return -2;

3. Sujet 3 : Les mthodes de tri dans un tableau


3.1.

Tri par slection

Ce tri sert classer les lments de tableau par ordre dcroissant par
slectionner le premier lment comme maximum ; et on le compare avec
lnime lment, si le max inferieur t[i], on les permute :
F. ELMASSMOUDI O. AZOUZI

Page 6

FST Tanger

Dpartement Informatiques

PMAX=I;
for (J=I+1; J<N; J++)
if (A [J]>A [PMAX]) PMAX=J;
{AIDE=A [I]; A[I] = A[PMAX]; A[PMAX] = AIDE;}

3.2.

Tri par bull

Le tri par bulle ou par propagation classe les lments de tableau par ordre
croissant, on comparant chaque lment avec le suive on permute si selon le cas.
for (i=0; i<*N; i++){
for (j=i+1; j<*N; j++){
if (*(T+i)>*(T+j)){
/***on fait la permutation*****/

Remarque : on utilise la deuxime boucle de rptition pour rpter lopration entre les lments
dj tries par la premire boucle. Ex : 421 ------ 2 4 1------- la 2eme boucle---- 214.

3.3.

Tri par insertion

Cest un classement par ordre croissant ; on utilise un fonction insrer qui


place un lment X l'intrieur d'un tableau tris par ordre croissant, on Trie le
tableau de gauche droite en insrant chaque fois l'lment I+1 dans le tableau
(dj tri) des I premiers lments.
void insrer(int aide,int *t,int *n) ||
{
||
int i;
||
for(i=*n;i>0&&*(t+i-1)>aide;i--)
||
*(t+i)=*(t+i-1);
||
*(t+i)=aide;
(*n)++;
}
||

3.4.

void tri_insertion(int *t,int *n)


{
int i=1;
while (i<*n)
inserer (*(t+i), t, &i);
} }

Tri rapide

Ce genre de tri aussi classe tous les lments par ordre croissant, utilisant un
pivot, on classe sa gauche les lments inferieurs et son droit les lments
suprieurs, et on rpte cette opration pour chaque partie de tableau.

3.5.

Tri par fusion

On devisant le tableau en deux parties et on fait la fusion de ces deux parties.


Le tri de deux partie t1 [] et t2 [] fait par appel de fonction triparbulle.
void fusion (int t[],int t1[],int t2[],int n1,int n2)
{int i1=0;i2=0;i=0;
while ( (i1<n1) && (i2<n2) )
{if( t1[i1] < t2[i2] )
t[i++]=t1[i1++];
Else
t[i++]=t2[i2++];
if( i1= =n1 )
for(j=i2;j<n2;j++)
t[i++]=t2[j] ;
else
for(j=i1;j<n1;j++)
t[i++]=t1[j];

F. ELMASSMOUDI O. AZOUZI

Page 7

FST Tanger

Dpartement Informatiques

Conclusion

Lutilisation des structures nous facile la


manipulation des variable; et nous aide viter
plusieurs erreurs de compilation. Or pour les
fonctions il est facile de retourner une structure aprs
traitement.
Ce qui concerne les mthodes de tri il yon a
plusieurs algorithmes ; leur avantage cest de classer
les lments saisies facilement selon lordre dsir.

F. ELMASSMOUDI O. AZOUZI

Page 8

S-ar putea să vă placă și