Aide pour calcul d'un prix
Bonsoir à tous,
Je viens vers vous pour essayer de trouver la "meilleure" facon possible pour calculer un prix d'un petit programme que je dois faire dans le cadre de mon cours sur le C.
Ce programme gere une liste de client d'un centre de thalasso. Ce centre propose differente cure, different soins, different hebergement et en fonction des saisons de l'année tout a un prix different.
Mon idée était de créer une structure speciale pour calculer le prix qui enregistrait toutes les informations importantes pour le prix final.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
struct Prix
{
int saison;
int c;
int s1;
int s2;
int s3;
int loge;
int chambre;
int suitevue;
int confchambre;
int vue
}; |
Avec la saison prennant les valeurs 1, 2, 3 ou 4
c le choix de la cure 1, 2 ou 3
s1 le soin optionnel 1 compris entre 1 et 8
s2 soins optionne 2
et ainsi de suite
Ma fonction prix ressemble a ca pour le moment (j'ai juste fais pour une saison) mais je la trouve pas très élégante et aimerais trouver un meilleur moyen de faire qu'une suite de if et de switch
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
|
void calculprix(struct Prix px){
int prix=0;
if (px.saison == 4){
// CURE
if(px.c==1){
prix=440;
} else if(px.c==2){
prix=460;
} else {
prix =560;
}
// SOINS
switch (px.s1)
{
case 1 :prix+=30;break;
case 2 :prix+=35;break;
case 3 :prix+=40;break;
case 4 :prix+=30;break;
case 5 :prix+=35;break;
case 6 :prix+=40;break;
case 7 :prix+=30;break;
case 8 : prix+=35;break;
case 9 : break;
}
switch (px.s2)
{
case 1 :prix+=30;break;
case 2 :prix+=35;break;
case 3 :prix+=40;break;
case 4 :prix+=30;break;
case 5 :prix+=35;break;
case 6 :prix+=40;break;
case 7 :prix+=30;break;
case 8 : prix+=35;break;
case 9 : break;
}
switch (px.s3)
{
case 1 :prix+=30;break;
case 2 :prix+=35;break;
case 3 :prix+=40;break;
case 4 :prix+=30;break;
case 5 :prix+=35;break;
case 6 :prix+=40;break;
case 7 :prix+=30;break;
case 8 : prix+=35;break;
case 9 : break;
}
if (px.loge==1){
if(px.chambre==1){//Simple
if(px.confchambre==1){//SIMPLE standar
if(px.vue==1){
prix+=190;
} else if (px.vue==2){
prix+=200;
} else {
prix+=175;
}
} else {// simple confort
if(px.vue==1){
prix+=220;
} else if (px.vue==2){
prix+=230;
} else {
prix+=200;
}
}
} else if (px.chambre==2){// confort
if(px.confchambre==1){//confort simple
if(px.vue==1){
prix+=140;
} else if (px.vue==2){
prix+=150;
} else {
prix+=125;
}
}else { // confort double
if(px.vue==1){
prix+=165;
} else if (px.vue==2){
prix+=175;
} else {
prix+=150;
}
}
} else {
if(px.suitevue==1){
prix+=375;
} else {
prix+=400;
}
}
}
}
printf("----------%d----------\n",prix);
}
} |
Voila j'espere avoir été clair sur mon probleme, mon cours ce résume au langage C de base donc pas de c++ car je pense que la POO permet mieux de faire ce genre de chose..
Merci d'avance :)