Auteur |
Message |
ora
Forumeur occasionnel
Messages: 41
|
Posté le:
Mar 07 Mar 2006 - 13:32 |
|
bonjour a tous ....
j'aurais vouloir avoir un petit conseil pour un algo, voilà en fait je dois calculer une facture d'électricité en faisant un sous-programme, en fonction d'une consommation donnée en KW/h et d'un abonnement donné aussi, en mois,
en fait je voulais savoir si il valait mieu décomposer mon calcule en créant deux variables, une pour le prix TTC de la consommation et une pour le tarif de l'abonnement TTc
ou bien alors donné directement le résultat de la facture...
c'est pas très clair... en fait vaut-il mieu:
fonction...(tab:tableau,CP:entier, conso:entier, duréeAbonnement:réel):réél
var
i:entier
consoTTC:réel
abonnementTTC:réel
début
i=1
tant que tab.t[i]<>CP faire
i=i+1
fin tant que
consoTTC= conso*tab[2,i]*tva
abonnementTT=durééAbonnement*tab[3,i]*tva
résultat=abonnementTTC + consoTTc
FIN
ou bien
........
fin tant que
Résultat:=(conso*tab[2,i]*tva)+(duréeabonnement*tab[3,i]*tva)
je sais pas si c'est très clair et merci à ceux qui me répondront. |
|
|
|
|
N'oubliez pas de vous inscrire à la communauté pour participer. Si vous êtes déjà membre, connectez-vous pour faire disparaître ce bandeau publicitaire. |
jun
Accro à Web-IG
Sexe:
Messages: 111
Localisation: lyon
|
Posté le:
Mar 07 Mar 2006 - 14:05 |
|
a mon avis peu importe .... du moment que ton calcul donne le bon resultat |
|
|
|
|
ora
Forumeur occasionnel
Messages: 41
|
Posté le:
Mar 07 Mar 2006 - 14:13 |
|
merci jun, je pensai qu'il devait sûrement y avoir une des deux solutions qui était préférable a l'autre mais bon après tout tu a raison...
merci encore |
|
|
|
|
kronky
Accro à Web-IG
Sexe:
Messages: 143
Localisation: Dijon
|
Posté le:
Mar 07 Mar 2006 - 15:49 |
|
En fait, ça dépend de ce que tu préfères : la lisibilité ou l'économie de variable.
En décomposant, c'est plus lisible et plus facile à maintenir/corriger.
En mettant tout d'un coup, tu économises deux variables, d'où un gain de temps (pas forcément perceptible d'ailleurs...).
Après, à toi de voir quel est le meilleur compromis lisibilité/optimisation.
Pour un algo simple comme ça, l'une ou l'autre, ça ne change rien à l'execution mais pour un algo bien plus complexe la question peut devenir sérieuse. |
|
|
|
|
ora
Forumeur occasionnel
Messages: 41
|
Posté le:
Mer 08 Mar 2006 - 13:02 |
|
merci kronky...
ba en fait j'ai opter pour la solution tout d'un coup....
je me suis dit qu'est ce qu'il y a en entrée, qu'est ce que je veux en sortie...
ba en sortie je veux le total....alors voilà
merci a vous.. |
|
|
|
|
dununfolette
Modérateur
Sexe:
Messages: 2497
Localisation: chambéry (73)
|
Posté le:
Mer 08 Mar 2006 - 16:14 |
|
ora a écrit: |
fonction...(tab:tableau,CP:entier, conso:entier, duréeAbonnement:réel):réél
var
i:entier
consoTTC:réel
abonnementTTC:réel
début
i=1
tant que tab.t[i]<>CP faire
i=i+1
fin tant que
consoTTC= conso*tab[2,i]*tva
abonnementTTC=durééAbonnement*tab[3,i]*tva
résultat=abonnementTTC + consoTTc
FIN
ou bien
........
fin tant que
Résultat:=(conso*tab[2,i]*tva)+(duréeabonnement*tab[3,i]*tva)
|
les deux fins m'ont l'air bien...c'est le milieu qui me perturbe
si j'ai bien compris : tab est un tableau dans lequel tu range en première position le type d'abonnement, en seconde le prix HT au kW et en troisième le prix HT de l'abonnement (au mois).
CP c'est l'abonnement choisi par le client
conso la quantité de kW/h consommés
duréeAbonnement la durée de l'abonnement
i la variable dans tab(x,i)
résultat le prix à payer, c'est la valeur retournée par la fonction.
fonction "facture" (tab:tableau (1 à 3, 1 à 100) de réels, CP:entier, conso:entier, duréeAbonnement:réel, résultat : réel):réél
var
i:entier
consoTTC:réel
abonnementTTC:réel
résultat : réel
début
i=1;
tant que tab(1,i)<>CP faire
i=i+1;
fin tant que
consoTTC= conso*tab(2,i)*tva;
abonnementTT=durééAbonnement*tab(3,i)*tva;
résultat=abonnementTTC + consoTTc;
retourne résultat;
FIN
on pourrait l'inserer dans un algo de type (considérant que le tableau données est déjà remplis) :
Algo facturation client
var :
Abo, Cons : entiers;
Durée, Prix : réels;
données : tableau (1 à 3, 1 à 100) de réels;
Début
Afficher "entrer l'abonnement choisi :";
Saisir Abo;
Afficher "entrer la durée de l'abonnement"
Saisir Durée;
"Entrer la consommation électrique en kW/h :"
Saisir Cons;
Facture (données, Abo, Cons, Durée, Prix);
Afficher "prix à payer :" Prix;
Fin
c'est ça ? où j'ai pas compris ? |
_________________ Doudou BTS IG ARLE eu et LP Réseaux Sans Fil et Sécurité validée ! Boulot, boulot, boulot...
Pensez à valider votre profil !
|
|
|
|
Yipyip
Modérateur
Sexe:
Messages: 1163
Localisation: Ici, là, pas loin ...
|
Posté le:
Mer 08 Mar 2006 - 17:20 |
|
Et testé dans un langage (n'importe lequel) ça donne quoi ?
C'est le meilleurs moyen de voir si c'est bon. |
_________________
|
|
|
|
dununfolette
Modérateur
Sexe:
Messages: 2497
Localisation: chambéry (73)
|
Posté le:
Mer 08 Mar 2006 - 17:24 |
|
moi 1°année ARLE, moi pas parler langages
si quelqu'un avait la gentillesse de le faire... |
_________________ Doudou BTS IG ARLE eu et LP Réseaux Sans Fil et Sécurité validée ! Boulot, boulot, boulot...
Pensez à valider votre profil !
|
|
|
|
ora
Forumeur occasionnel
Messages: 41
|
Posté le:
Mer 08 Mar 2006 - 18:02 |
|
salut a tous et merci..
les données sont un tableau Té[3,10]
dans lequel la première ligne concerne les code puissance qui détermine le pris du KW/h et le prix de l'abonnement mensuel...
on nous dit aussi que le prix du KW/h actuellement est de 0,0779HT
pour mon exercice, on suppose que le programme principal définit et initialise le tableau Té
On me demande d'ecrire un sous programme calculant la facture d'électricité en fonction d'une durée d'abonnement donnée(en mois par exemple 2,5)
de la conso en KW/h sur cette periode (arrondie a l'entier le plus proche)
et du code puissance choisi
TVA=5,5%
taxe sur KW/h=19,6%
mon sous programme est donc...
Fonction FactureElec (Tab:Té[3,10], CP:entier; DuréeA:réel; Conso:entier):réel
var
i:entier
début
i=1
tant que Tab.t[1,i]<>CP faire
i=i+1
fin tant que
Résultat:=(Conso*0,0779*0,196*Tab[2,i])+(DuréeA*0,055*Tab[3,i])
Fin
je ne dois pas m'occuper du programme principal... |
|
|
|
|
dununfolette
Modérateur
Sexe:
Messages: 2497
Localisation: chambéry (73)
|
Posté le:
Mer 08 Mar 2006 - 18:53 |
|
en fait c'était juste parce que j'avais du mal dans tes variables donc je voulais savoir si ça correspondait bien
sinon c'est bon à part le fait qu'une fonction retourne obligatoirement quelque chose (il me semble) donc tu dois indiquer ce que retourne ta fonction sinon c'est une procédure (c'est un peu bête puisqu'on veut le résultat du calcul ) |
_________________ Doudou BTS IG ARLE eu et LP Réseaux Sans Fil et Sécurité validée ! Boulot, boulot, boulot...
Pensez à valider votre profil !
|
|
|
|
ora
Forumeur occasionnel
Messages: 41
|
Posté le:
Mer 08 Mar 2006 - 21:17 |
|
tu veux parler du retourne résultat? j'ai jamais vu ça moi...
pour moi la différence entre une procedure et une fonction, c'est que la fonction retourne un résultat du même type que la foncion, ici réel
ca peut etre un booléen aussi, tandis qu'une procédure retourne une instruction
et le retourne...j'ai jamais vu |
|
|
|
|
dununfolette
Modérateur
Sexe:
Messages: 2497
Localisation: chambéry (73)
|
Posté le:
Mer 08 Mar 2006 - 21:40 |
|
c'est chiant l'algo ! chacun utilise des notifications différentes !
chez moi si on met pas le retourne on a pas les points pour la fonction... |
_________________ Doudou BTS IG ARLE eu et LP Réseaux Sans Fil et Sécurité validée ! Boulot, boulot, boulot...
Pensez à valider votre profil !
|
|
|
|
Yipyip
Modérateur
Sexe:
Messages: 1163
Localisation: Ici, là, pas loin ...
|
Posté le:
Mer 08 Mar 2006 - 21:41 |
|
Bon voici le code en C d'apres l'algo ci dessus
A tester avec un tableau rempli.
Code: |
#include <stdio.h>
double facture (double tab[100], int CP, double conso, double dureeAbonnement)
{
int i;
double consoTTC;
double abonnementTTC;
double resultat;
double tva = 007.5;
i = 1;
while (tab[i] != CP)
{
i++;
}
consoTTC = conso * tab[i] * tva;
abonnementTTC = dureeAbonnement * tab[i] * tva;
resultat = consoTTC + abonnementTTC;
return resultat;
}
/* la facturation client est dans la fonction principale */
int main ()
{
double donnees[100];
double duree, prix;
double resultat;
int abo, cons;
printf ("Entrer l'abonnement choisi :");
scanf ("&d", &abo);
printf ("Entrer la duree de l'abonnement :");
scanf ("&f", &duree);
printf ("Entrer la consommation electrique en kW/h :");
scanf ("&f", &cons);
resultat = facture(donnees, abo, cons, duree);
printf ("prix à payer : %f\n", resultat);
return 0;
}
|
Pour la différence entre la fonction et la procédure, c'est bien que la fonction retourne un resultat et que la procédure ne retourne rien. Elle se contente d'effectuer un traitement. |
_________________
|
|
|
|
ora
Forumeur occasionnel
Messages: 41
|
Posté le:
Mer 08 Mar 2006 - 23:51 |
|
meci yipyip
est ca veut dire qu'il faut mettre le retourne résultat, j'ai jamais vu ca dans mes cours.... |
|
|
|
|
kronky
Accro à Web-IG
Sexe:
Messages: 143
Localisation: Dijon
|
Posté le:
Jeu 09 Mar 2006 - 10:40 |
|
ora a écrit: |
meci yipyip
est ca veut dire qu'il faut mettre le retourne résultat, j'ai jamais vu ca dans mes cours.... |
Ca dépend du langage avec lequel ton prof d'algo est habitué à programmer. Il n'y a pas vraiment une syntaxe algo universelle.
Là ton algo a une syntaxe très proche du Pascal/Delphi dans lequel une fonction retourne son résultat avec l'instruction
qui est l'équivalent de ton Resultat:=
Donc le retourne que veut dununfolette , c'est ton Resultat:=.
En C, l'instruction correspondante, c'est return (cf le post de yipyip). |
|
|
|
|
|