CHAN-HOW-THAK Guillaume Groupe A 1-CONTENEUR POUR CALCULS STATIQUES: Q1) Deux vecteurs sont parfaitement adaptés.Ainsi, on aura un vecteur pour stocker l'age, et un autre pour stocker son sexe. En effet, d'après l'énoncer n est donnée à l'avance, on connait donc le nbre de cases allouer en mémoire à l'avance. A un rang i correspond un age ainsi que son sexe associé. Q2) Constructeur Vecteur: calculerMoyenneAge(Vecteur age, Vecteur sexe): Vecteur References Locales: Entier n Entier i Entier n1 Entier n2 Entier sommeAgeFemme Entier sommeAgeHomme Vecteur res DEBUT egalA(borneInf(res),1) egalA(borneSup(res),2) i<-1 n1<-0 n2<-0 sommeAgeFemme<-0 sommeAgeHomme<-0 egalA(n, borneSup(sexe)) Tantque i<=n faire DEBUT Si estEgal(recVal(sexe,i), femme) DEBUT egalA(sommeAgeFemme,sommeAgeFemme+recVal(age,i)) n1=n1+1 FIN Sinon DEBUT egalA(sommeAgeHomme,sommeAgeHomme+recVal(age,i)) n2=n2+1 FIN i<-i+1 FIn egalA(moyenneFemme,sommeAgeFemme\n1) egalA(moyenneHomme,sommeAgeHomme\n2) AffVal(res,1,moyenneFemme) affVal(res,2moyenneHomme) retourner res FIN 2-FUSION DE PILES: Q1) Transformateur Pile : injecterPile (Pile p2) : Pile Axiomes: definie(injecterPile(p2))<=>non estVide(p2) et non estVide(p1) definie(injecterPile(p2))<=> p1 et p2 ordonnées Q2) Transformateur Pile: injecterPile(p2): Pile Transformé p1 References loacles: DEBUT p2temp<-p2 p1temp<-p1 egalA(n,longueur(p2)) i<-0 Tantque non estVide(p1) FAIRE DEBUT ajouter(p1temp,sommet(p)) supprimer(p1) FIN TANTQUE non estVide(p2) FAIRE DEBUT ajouter(p2temp,sommet(p)) supprimer(p2) FIN Tantque non estVide(p1temp) et estVide(p2temp) FAIRE DEBUT SI sommet(p1temp)>sommet(p2temp) DEBUT ajouter(p1,sommet(p2tmp) supprimer(p2temp) FIN SINON DEBUT ajouter(p1,sommet(p1temp) supprimer(p1temp) FIN FIN SI estVide(p1temp) DEBUT TANTQUE non estVide(p2temp) DEBUT ajouter(p1,sommet(p2temp)) supprimer(p2tmp) FIN FIN SI estVide(p2temp) DEBUT TANTQUE non estVide(p2temp) DEBUT ajouter(p1,sommet(p2temp)) supprimer(p2temp) FIN FIN retourner p1 FIN 3-UN PETIT TYPE ABSTRAIT Les opérations de base sont: 1)Constructeur Polyligne: creerPolyligne(Reel x, Reel y ) : Polyligne 2)Transformateur Polyligne: ajouterPoint(Reel x, Reel y) : Polyligne 5)Observateur Polyligne : recPoint() : Vecteur Les opérations d'extentions sont: 6)Constructeur Polyligne: concatenerPolyligne(Polyligne p, Polyligne q ) : Polyligne 3)Observateur Polyligne : longueur() : Reel 4)Observateur Polyligne : estOuverte() : Booleen Les Post-conditions et pre-conditions sont: longueur(creerPolyligne(Reel x, Reel y))=0 estOuvert(ajouterPoint(creerpolyligne(Reel x,Reel y), Reel x,Reel y) = vrai estOuvert(creerPolyligne(Reel x, Reel y))=faux definie(ajouterPoint(Reel x, Reel y))<=> il existe un polyligne p definie(recPoint())<=> il existe au moins un point Il y a plusieurs solutions possibles. Une solution est bonne dans la mesure où - L'ensembles des opérations du type abstrait couvre le cahier de charges - Toutes les opérations d'extension peuvent être déduites des opérations de base - Il n'y a pas de redondance dans les opérations de base