Gérer le forum:  Aide  •  Rechercher  •  Liste des Membres  •  Groupes d'utilisateurs   •  S'enregistrer  •  Profil  •  Se connecter pour vérifier ses messages privés  •  Connexion 
 problème pour algo concernant les tableau Voir le sujet suivant
Voir le sujet précédent
Poster un nouveau sujetRépondre au sujet
Auteur Message
ora
Forumeur occasionnel
Forumeur occasionnel


BTS IG - Option réseau Diplômé

Messages: 41

MessagePosté le: Mar 07 Mar 2006 - 13:32 Répondre en citantRevenir en haut

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.
Voir le profil de l'utilisateurEnvoyer un message privé

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
Accro à Web-IG


Post-BTS
Sexe: Sexe:Masculin
Messages: 111
Localisation: lyon

MessagePosté le: Mar 07 Mar 2006 - 14:05 Répondre en citantRevenir en haut

a mon avis peu importe .... du moment que ton calcul donne le bon resultat Very Happy
Voir le profil de l'utilisateurEnvoyer un message privéMSN Messenger
ora
Forumeur occasionnel
Forumeur occasionnel


BTS IG - Option réseau Diplômé

Messages: 41

MessagePosté le: Mar 07 Mar 2006 - 14:13 Répondre en citantRevenir en haut

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
Voir le profil de l'utilisateurEnvoyer un message privé
kronky
Accro à Web-IG
Accro à Web-IG


BTS IG - Option développeur Diplômé
Sexe: Sexe:Masculin
Messages: 143
Localisation: Dijon

MessagePosté le: Mar 07 Mar 2006 - 15:49 Répondre en citantRevenir en haut

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. Wink
Voir le profil de l'utilisateurEnvoyer un message privéEnvoyer l'e-mailVisiter le site web du posteurMSN Messenger
ora
Forumeur occasionnel
Forumeur occasionnel


BTS IG - Option réseau Diplômé

Messages: 41

MessagePosté le: Mer 08 Mar 2006 - 13:02 Répondre en citantRevenir en haut

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..
Voir le profil de l'utilisateurEnvoyer un message privé
dununfolette
Modérateur
Modérateur


Licence Professionnelle
Sexe: Sexe:Féminin
Messages: 2497
Localisation: chambéry (73)

MessagePosté le: Mer 08 Mar 2006 - 16:14 Répondre en citantRevenir en haut

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 Embarassed

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 !

Image
Voir le profil de l'utilisateurEnvoyer un message privé
Yipyip
Modérateur
Modérateur



Sexe: Sexe:Féminin
Messages: 1163
Localisation: Ici, là, pas loin ...

MessagePosté le: Mer 08 Mar 2006 - 17:20 Répondre en citantRevenir en haut

Et testé dans un langage (n'importe lequel) ça donne quoi ?
C'est le meilleurs moyen de voir si c'est bon.

_________________
Image
Image
Voir le profil de l'utilisateurEnvoyer un message privé
dununfolette
Modérateur
Modérateur


Licence Professionnelle
Sexe: Sexe:Féminin
Messages: 2497
Localisation: chambéry (73)

MessagePosté le: Mer 08 Mar 2006 - 17:24 Répondre en citantRevenir en haut

moi 1°année ARLE, moi pas parler langages Mr. Green
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 !

Image
Voir le profil de l'utilisateurEnvoyer un message privé
ora
Forumeur occasionnel
Forumeur occasionnel


BTS IG - Option réseau Diplômé

Messages: 41

MessagePosté le: Mer 08 Mar 2006 - 18:02 Répondre en citantRevenir en haut

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...
Voir le profil de l'utilisateurEnvoyer un message privé
dununfolette
Modérateur
Modérateur


Licence Professionnelle
Sexe: Sexe:Féminin
Messages: 2497
Localisation: chambéry (73)

MessagePosté le: Mer 08 Mar 2006 - 18:53 Répondre en citantRevenir en haut

en fait c'était juste parce que j'avais du mal dans tes variables donc je voulais savoir si ça correspondait bien Wink
sinon c'est bon Smile à part le fait qu'une fonction retourne obligatoirement quelque chose (il me semble) donc tu dois indiquer ce que retourne ta fonction Razz sinon c'est une procédure (c'est un peu bête puisqu'on veut le résultat du calcul Mr. Green)

_________________
Doudou BTS IG ARLE eu et LP Réseaux Sans Fil et Sécurité validée ! Boulot, boulot, boulot...
Pensez à valider votre profil !

Image
Voir le profil de l'utilisateurEnvoyer un message privé
ora
Forumeur occasionnel
Forumeur occasionnel


BTS IG - Option réseau Diplômé

Messages: 41

MessagePosté le: Mer 08 Mar 2006 - 21:17 Répondre en citantRevenir en haut

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 Rolling Eyes
Voir le profil de l'utilisateurEnvoyer un message privé
dununfolette
Modérateur
Modérateur


Licence Professionnelle
Sexe: Sexe:Féminin
Messages: 2497
Localisation: chambéry (73)

MessagePosté le: Mer 08 Mar 2006 - 21:40 Répondre en citantRevenir en haut

c'est chiant l'algo ! chacun utilise des notifications différentes ! Crying or Very sad
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 !

Image
Voir le profil de l'utilisateurEnvoyer un message privé
Yipyip
Modérateur
Modérateur



Sexe: Sexe:Féminin
Messages: 1163
Localisation: Ici, là, pas loin ...

MessagePosté le: Mer 08 Mar 2006 - 21:41 Répondre en citantRevenir en haut

Bon voici le code en C d'apres l'algo ci dessus Very Happy
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.

_________________
Image
Image
Voir le profil de l'utilisateurEnvoyer un message privé
ora
Forumeur occasionnel
Forumeur occasionnel


BTS IG - Option réseau Diplômé

Messages: 41

MessagePosté le: Mer 08 Mar 2006 - 23:51 Répondre en citantRevenir en haut

meci yipyip
est ca veut dire qu'il faut mettre le retourne résultat, j'ai jamais vu ca dans mes cours....
Voir le profil de l'utilisateurEnvoyer un message privé
kronky
Accro à Web-IG
Accro à Web-IG


BTS IG - Option développeur Diplômé
Sexe: Sexe:Masculin
Messages: 143
Localisation: Dijon

MessagePosté le: Jeu 09 Mar 2006 - 10:40 Répondre en citantRevenir en haut

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
Code:
Result:=

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).
Voir le profil de l'utilisateurEnvoyer un message privéEnvoyer l'e-mailVisiter le site web du posteurMSN Messenger
Montrer les messages depuis:      
Poster un nouveau sujetRépondre au sujet
 Sauter vers:   



Voir le sujet suivant
Voir le sujet précédent
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum