Problème : La Librairie Genius 10pts
Les étudiants du GROUPE toujours très curieux désirent pour un expose en algorithmique et Langage C , manipuler en mémoire centrale d’un ordinateur en ensemble de Livre . Les informations concernant un Livre sont : le code, nom, l’auteur, description, prix, quantité et la notation du livre ( de 0 à 5 ) .
- Proposer une structure de donnée adéquate permettant de manipuler ces données en mémoire. (en Algo et en C ) .
CORRECTION : (En algo)
Const N=100 ;
Type livre= enregistrement
code : chaine de caractère ;
nom : chaine de caractère ;
auteur :chaine de caractere ;
descript : chaine de caractère ;
prix : réel ;
quantité : réel ;
notation : réel ;
Fin ;
tabliv= tableau[1…N] de livre ;
- Proposer une fonction permettant de rechercher un Livre par son code dans l’ensemble. (en Algo et en C )
CORRECTION : (en algo)
Fonction rechercheliv(t :tabliv , code :chaine de caractère) : entier ;
Var i :entier ;
Debut
iß1 ;
tantque( i<=N et t[i].code<>code)faire
ißi+1 ;
fintantque
si(i=N+1) alors
recherchelivß-1 ;
sinon
recherchelivß i ;
finsi
fin ;
- Proposer une fonction permettant d’insérez un Livre dans l’ensemble des Livres. (en Algo )
CORRECTION :
Procedure insertliv(var t :tabliv, L :livre) ;
Var i, case : entier ;
Debut
Si(rechercheliv(t , livcode)=-1) alors
iß1 ; caseß0 ;
tantque(i<=N et case=0) faire
si(t[i].code= ’’ ’’) alors
t[i].codeßL.code ;
t[i].nomßL.nom ;
t[i].auteurßL.auteur ;
t[i].descriptß L.descript ;
t[i].prixßL.prix ;
t[i].quantiteßL.quantite ;
t[i].notationßL.notation ;
caseßcase+1 ;
finsi
ißi+1 ;
fintantque
si(case=0) alors
ecrire(’’insertion impossible car le tableau est plein’’) ;
sinon
ecrire(’’insertion reussie’’) ;
finsi
sinon
ecrire(’’l’element existe déjà dans le tableau’’) ;
finsi
fin ;
- Proposer une fonction permettant compter tous les Livres dont le nom est : GENIUS dans l’ensemble des Livres. (en Algo et C )
CORRECTION : (en algo)
Fonction compteliv(t :tabliv) :entier ;
Var i, cpt :entier ;
Debut
Cptß0 ;
Pour i de 1 à N faire
Si(t[i].nom= ‘’Genuis’’) alors
CptßCpt+1 ;
Finsi
Finpour
Comptelivßctp ;
Fin ;
- Proposer une fonction permettant classer tous les Livres par ordre croissant dans l’ensemble des produits (utiliser le trie insertion) ceci par la notation. (en Algo )
CORRECTION :
Procedure trinotation(var t :tabliv) ;
Var cle :livre ; i,j :entier ;
Debut
Pour i de 2 à N faire
cle.notationßt[i].notation ;
cle.codeßt[i].code ;
cle.nomßt[i].nom ;
cle.auteurßt[i].auteur ;
cle.descriptßt[i].descript ;
cle.prixßt[i].prix ;
cle.quantiteßt[i].quantite ;
jßi-1 ;
tantque(cle.notation<t[j].notation et j>0)faire
t[j+1].codeßt[j].code ;
t[j+1].nomßt[j].nom ;
t[j+1].auteurßt[j].auteur ;
t[j+1].descriptßt[j].descript ;
t[j+1].prixßt[j].prix ;
t[j+1].quantiteßt[j].quantite ;
t[j+1].notationßt[j].notation ;
tßj-1 ;
fin tantque
t[j+1].notationßcle.notation ;
t[j+1].codeßcle.code ;
t[j+1].nomßcle.nom ;
t[j+1].auteurßcle.auteur ;
t[j+1].descriptßcle.descipt ;
t[j+1].prixßcle.prix ;
t[j+1].quantiteßcle.quantite ;
finpour
pour i de 1 à N faire
ecrire(t[i].code) ;
ecrire(t[i].nom) ;
ecrire(t[i].auteur) ;
ecrire(t[i].descript) ;
ecrire(t[i].prix) ;
ecrire(t[i].quantite) ;
ecrire(t[i].notation) ;
finpour
fin ;
- Proposer une fonction permettant de supprimer tous les Livres dont le code est pris en paramètre de la Fonction dans l’ensemble des Livres. (en Algo )
CORRECTION :
Procedure supliv(var t :tabliv , code : chaine de caractere) ;
Var i :entier ;
Debut
ißrechercheliv(t,code) ;
si(i<>-1) alors
t[i].codeß’’ ‘’ ;
t[i].nomß’’ ‘’ ;
t[i].auteurß’’ ‘’ ;
t[i].descriptß’’ ‘’ ;
t[i].prixßNIL ;
t[i].quantiteßNIL ;
t[i].notationßNIL ;
sinon
ecrire(‘’l’element n’existe pas’’) ;
finsi
fin ;
- Proposer une fonction permettant de modifier le prix d’un Livre dans l’ensemble des Livres. (en Algo )
CORRECTION :
Procedure modifprix(var t :tabliv , l :libre ) ;
Var i :entier ;
Debut
Ißrechercheliv(t , l.code) ;
Si(i<>-1)alors
t[i].prixßl.prix
sinon
ecrire(‘’le livre n’existe pas’’) ;
finsi
fin ;
- Proposer une fonction permettant d’afficher tous les produits les plus vendues dans l’ensemble des Livres. (Nb : un Livre qui a eu du succès auprès des étudiants est un Livre qui a reçu une notation supérieure à 2.5, on s’attarderas pas sur la gestion de la notation mais plutôt sur sa valeur brute.) (en Algo et C )
CORRECTION :
Procedure affichlivre(t :tabliv ) ;
Var i :entier ;
Debut
Pour i de 1 à N faire
Si (t[i].notation>2,5)alors
Ecrire(t[i].code) ;
Ecrire(t[i].nom) ;
Ecrire(t[i].auteur) ;
Ecrire(t[i].descript) ;
Ecrire(t[i].prix) ;
Ecrire(t[i].quantite) ;
Ecrire(t[i].notation ) ;
Finsi
Finpour
Fin ;
- Proposer une fonction permettant de sauvegarder de façon permanente les données relatives à l’ensemble des Livres. (en Algo )
CORRECTION :
Type fichliv=fichier de livre ;
Procedure sauvegarde(f :fivhliv , t :tabliv)
Var i :entier ;
Debut
Ouvrire(f) ;
iß1 ;
Tantque( non(fin(f)) et i<=N)faire
ecrire(f,t[i]) ;
ißi+1 ;
fintantque
fermer(f) ;
ecrire(‘’sauvegarde terminer’’) ;
fin ;
- Donnez la différence entre un Tableau et un Fichier en Algo.
CORRECTION :
La différence entre un tableau et un fichier est que dans un tableau les traitements se font dans la mémoire vive (la RAM) par conséquent les informations ne sont pas définitives or dans un fichier les traitements de font dans une mémoire morte (ROM, disquette…) donc les informations sont enregistrer de façon définitives ;
GROUPE GENIUS REPETITION Contact : +237 658 39 59 78
|
Coordonnateur : Mr Joël_yk
|