M'aider à faire un exercice en algorithme

Résolu
jamesbandes Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -  
 malek -
Bonjour,

vous pouvez m'aider dans cet exercice s'il vous plait:
__________________________________________________________________________________
une société de transport ferrovier propose à ses clients une réduction de:
40% pour les enfants
10% pour les groupes de plus de 4 adultes
20% pour les groupes de plus de 8 adultes

1-ecrire la fonction: calculer_prix cette fonction reçoit trois paramètre le premier correpond au tarif de base le deuxième au nombre de personne(enfant inclus) le troisième le nombre d'enfants : la fonction doit calculer et retourner le prx à payer en fonction de ses trois paramètres.
A voir également:

14 réponses

tarek_dotzero Messages postés 817 Date d'inscription   Statut Membre Dernière intervention   122
 
Bonjour,

Ce code est en pascal, vous n'avez pas specifié le langage! il n'est pas testé!

function CalculPrix(prixBase: Float, nbrPersonnes: Integer, nbrEnfants: Integer): Float;
var
         nbrAdult: Integer;
         lePrix : Float;
Begin
          nbrAdult := nbrPersonnes - nbrEnfants;
          lePrix := nbrEnfant * prixBase * 0.6;
          
           if nbrAdult < 4 then
                   lePrix := lePrix + (prixBase * nbrAdult)
           else
           begin
                   if nbrAdult < 8 then
                            lePrix := lePrix + (prixBase * nbrAdult * 0.9)
                   else
                             lePrix := lePrix + (prixBase * nbrAdult * 0.8);
           end;

          CalculPrix := lePrix;

end;
1
DjSKeud Messages postés 97 Date d'inscription   Statut Membre Dernière intervention   31
 
pa dure, mais juste une précision sur "les groupes d'adultes" ... on cocidere que a partir du moment ou il y a 4 adultes (meme sils ne se connaissent pas) ils font partis d'un groupe et bénéficient de la réduction ?
0
jamesbandes
 
merci pour les réponses que tu m'a apporté
et je vous remercie encore une fois
bay
0
jamesbandes Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
merci pour les réponses que tu m'a apporté
et je vous remercie encore une fois
bay
0
DjSKeud Messages postés 97 Date d'inscription   Statut Membre Dernière intervention   31
 
???

0
JFS77 Messages postés 389 Date d'inscription   Statut Membre Dernière intervention   70
 
SAlut,

il a demandé en algorithme donc pas besoin de preciser le langage ;-)

Sinon cete solution me semble nikel (bravo lol). Si tu as des difficultés a comprendre je te l'écris en algo (enfin ca me semble très clair tout de même)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
DjSKeud Messages postés 97 Date d'inscription   Statut Membre Dernière intervention   31
 
bonjour a vous tarek_dotzero et JFS77

je pense en effet qu'ils manques quelques informations. Au dela du langage, il faut egalement eclairsir la notion de "groupe d'adultes". Que fais-tu si il y a plus de 16 adultes ? ton code semble comter comme "groupe" uniquement les 8 premiers en tant que groupe, et faire payer les autres au prix fort.
Autrement di, je pense qu'il faut adns un 1ier temps effectivement soustraire les enfants du nombre total de personne, mais que ensuite il faut compter combien de groupe de 8 personnes il est possible de faire. ensuite, une fois que tous ces groupes sont fait, tester si les nombre de personnes sans groupe est suppérieur à 4, au quel cas tu peux refaire un groupe de 4 avec les personnes restantes. s'il reste encore des adultes sans groupe, alors uniquement ceux-ci (3 maximum), payrons le prix fort.

exple pour 24 personnes, dont 3 enfants, cela donne :
- 3 enfants
- 2 groupes de 8 adultes
- 1 groupe de 4 adultes
- 1 adulte seul


.. c'est en gros quelques lignes de plus à coder, mais pas de language, pas de code ! :D
0
tarek_dotzero Messages postés 817 Date d'inscription   Statut Membre Dernière intervention   122
 
Salut,

En effet, cela simplifie les chose:
Comme vous l'avez dit: la première partie est bonne, donc cette partie est pour les adultes:

Un rappel: le div donne la division entière et le mod le modulo!

On ajoute la declaration de quelque variables:

prixGroup8 := prixBase * 8 * 0.8;
prixGroup4 := prixBase * 4 * 0.9;
nbrGroup8 := nbrAdult div 8;
nbrGroup4 := (nbrAdult mod 8) div 4;
nbrPersonnesSeules := nbrAdult - (nbrGroup8 * 8) - (nbrGroup4 * 4);

lePrix := lePrix(des enfanst) + nbrGroup8 * prixGroup8 + nbrGroup4 * prixGroup4 + nbrPersonnesSeules * prixBase;


Je ne teste pas, mais si j'ai bien compris cela doit marcher!
0
DjSKeud Messages postés 97 Date d'inscription   Statut Membre Dernière intervention   31
 
... voila quelque chose qui me semble plus raisonnable tarek_dotzero :)
apres c'est à voir en fonction du cahier des charges. C'est bien beau de laisser des posts pour que les autres se creusent la tête, mais encore faudrait-il répondre :)
0
jamesbandes
 
merci pour votre réponse
et je vous remercie encore une fois
bay
0
DjSKeud Messages postés 97 Date d'inscription   Statut Membre Dernière intervention   31
 
au plaisir
0
kawkawa_w
 
l'algorithme et le module le plus important dans ma filiére de spécialité et je trouve des difficultés pour le métriser alors n'hésitez pas de m'aider à trouver une solution le plutot possible je compte sur vous .et merci d'avance.
0
malek
 
ecrire une analyse et en deduire un algorithme intitulé FACTORIEL qui calcul puis affiche le factoriel d un entier naturel N donné. N != 1.2.3.4.5.......N
0
malek
 
le nombre 1089 a la propriété suivante: 9801= 9 x 1089. il ya d autre nombres de 4 chiffres qui verifie cette propriété. ecrire une analyse et un algorithme qui determine puis affiche ces nombres.
0
malek
 
ecrire une analyse et en deduire un algorithme qui cherche et affiche tous les carrés parfaits de la formes aabb.
0
malek
 
ecrire une analyse et en deduire un algorithme intitulé AFFICHE qui permet d afficher 1 une fois, 2 deux fois, 3 trois fois,..... 9 neuf fois. merci et svp si c possible vs m reponD le plus tt possibles sur tt ces problemes car j ai un examens dem1 et ca va etre un de c problemes. merci
0