You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3.5 KiB
3.5 KiB
Atelier
Un organisateur de voyages veux pouvoir remplir son véhicule de 8 places avant de savoir si il doit organiser le voyage ou pas. Chaque voyageur a un nom, un prénom, un numero de place, une date de naissance, et un indicateur qui précise si il a payé ou pas. Il n'a pas besoin d'avoir payé pour avoir un numéro de place.
Ecrire l'objet voyageur avec ces propriétés et au moins une fonction pour pouvoir modifier l'état payé.
objet voyageur
variable privée nom, prenom : chaine;
variable privée date_de_naissance : date;
variable privée numero_de_place : entier;
variable privée payé : booléen;
methode constructeur(nom,prenom,date)
ceci->nom = nom;
ceci->date_de_naissance = date;
ceci->prenom = prenom;
ceci->numero_de_place = 0;
ceci->payé = faux;
fin methode
methode paiement_recu()
ceci->payé = vrai;
fin méthode;
methode a_payé()
renvoyer ceci->payé
fin methode
methode attribuer_place(numero)
si numero > 0
ceci->numero_de_place = numero
fin si
fin methode
methode place()
renvoyer ceci->numero_de_place;
fin methode
methoode identite()
renvoyer ceci->prenom ~ " " ~ ceci->nom ~ " né le " ~ ceci->date_de_naissance;
fin methode
fin objet
Ecrire un objet chauffeur héritant de voyageur, mais comme il est dans l'équipage, il est forcément indiqué comme ayant payé.
objet chauffeur étend voyageur
methode constructeur(nom,prenom,date)
parent->constructeur(nom,prenom,date);
ceci->paiement_recu();
fin methode;
fin objet
Ecrire le psuedo code permettant de créer un chauffeur ou un voyageur en fonction du choix de l'utilisateur
fonction creer_voyageur(chauffeur_autorisé=vrai)
var mon_voyageur : objet;
var est_chauffeur : booléen;
var nom, prenom : chaine;
var unedate : date;
Afficher "Nom ?"
Lire nom
Afficher "Prenom ?"
Lire prenom
Afficher "Date de naissance ?"
Lire date
si chauffeur_autorisé alors
est_chauffeur = faux;
Afficher "C'est un chauffeur ?"
Si reponse_fin == "oui" Alors
est_chauffeur = vrai
Fin si
fin si
Si est_chauffeur == vrai Alors
mon_voyageur = nouveau chauffeur(nom,prenom,date);
Sinon
mon_voyageur = nouveau voyageur(nom,prenom,date);
Fin si;
renvoyer mon_voyageur;
fin fonction
Ecrire le pseudo code permettant de mettre dans un tableau au minimum un chauffeur et un client. Sachant quon ne peut pas avoir plus d'un chauffeur.
var tdv : tableau;
var fini, a_chauffeur, vehicule_rempli : booléen;
var nb_voyageurs : entier;
var reponse : chaine;
nb_voyageurs = 0;
fini = faux;
a_chauffeur = faux;
vehicule_rempli = faux;
Tant que (fini != vrai et a_chauffeur != vrai et !vehicule_rempli)
tdv[nb_voyageurs] = creer_voyageur(!a_chauffeur);
nb_voyageurs = nb_voyageurs +1;
Si tdv[nb_voyageurs] instancede chauffeur
a_chauffeur = vrai;
fin si;
vehicule_rempli = (a_chauffeur et nb_voyageurs == 9) ou (!a_chauffeur et nb_voyageurs == 8);
Si taille(tdv) >= 2 alors
Afficher "fini ?"
Lire reponse_fin
Si reponse_fin == "oui" Alors
fini = vrai
Fin si
Fin si
Fin tant que;
Puis de vérifier si tout le monde a payé ou pas.
var i entier;
i=0;
fini = false;
Tant que i < taille(tdv) et !fini
si faux == tdv[i]->a_payé() alors
Afficher "tout le monde n'a pas payé";
fini = vrai
fin si
i = i+1;
fin tant que
Si i == taille(tdv) et !fini
Afficher "tout le monde a payé";
fin si