CONSOMMATION INTERNET (COMPILÉ AVEC DEV C++)

randiox Messages postés 17 Date d'inscription mercredi 30 avril 2003 Statut Membre Dernière intervention 6 février 2005 - 20 déc. 2003 à 18:55
cs_muntoya Messages postés 18 Date d'inscription dimanche 2 février 2003 Statut Membre Dernière intervention 22 décembre 2003 - 22 déc. 2003 à 13:42
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/18867-consommation-internet-compile-avec-dev-c

cs_muntoya Messages postés 18 Date d'inscription dimanche 2 février 2003 Statut Membre Dernière intervention 22 décembre 2003
22 déc. 2003 à 13:42
Tu as raison Irsla.
Enfin mon but est de lui expliquer rapido l'utilisation des fonctions, meme si il reste des petites retouches effectivemment possibles comme tu l'as bien décrit ou comme la declaration stdlib.h qui est inutile pour dev c++...ou d'autres petits trucs sympas.
Enfin voila, bonne continuation à tous.
Irsla Messages postés 8 Date d'inscription mardi 14 janvier 2003 Statut Membre Dernière intervention 22 décembre 2003
22 déc. 2003 à 12:29
ps: if (g>0)
{
cout<<"il vous reste "<<g<<" heures pour aujourd'hui ";
}
if (g<0)
{
cout<<"vous avez depasse votre forfait de "<<g<<" heures pour aujourd'hui ";
}

ici coter opti y'a mieux si g < 0 alors il ne sera jamais > 0 par consequent ca sert a rien de le lui faire tester ;)
Irsla Messages postés 8 Date d'inscription mardi 14 janvier 2003 Statut Membre Dernière intervention 22 décembre 2003
22 déc. 2003 à 12:28
... sans vouloir etre mechant qd on veut proposer une amelioration autant qu'elle soit la "meilleur possible" et en lisant 1 fois le code on se rend bien vite compte des ptit truc qui cloche :
1:
switch (a)
{
case 1 :
Calcul();
break;

default : // en realité si tu touche autre que 2, le programme
return 0; // se fermera aussi
}

ne sert a rien si il n'y a qu'un seul case dans ce cas un simple if ... else aurai suffit

2:
if (g>0)
{
cout<<"il vous reste "<<g<<" heures pour aujourd'hui ";
}
if (g<0)
{
cout<<"vous avez depasse votre forfait de "<<g<<" heures pour aujourd'hui ";
}

et si g == 0 ? ...
pas de bol c justemement a cette valeur la qu'il faut reagir ;)
enfin bon ;)

sinon juste une petite precision utile pour anthonyl
essaye de donner des noms de variable significative je sais que ca peut paraitre inutil mais pour de tres gros codes ( ou ne serait ce des codes (algo) complexe) ca devient tres vite obligatoire.
Sinon ton code va vite ressembler a kkle chose d'imcomprehensible.
ps: moi aussi au debut je nommais toutes mes variable a,b,c,d .... ;)

@++

Irsla
cs_muntoya Messages postés 18 Date d'inscription dimanche 2 février 2003 Statut Membre Dernière intervention 22 décembre 2003
22 déc. 2003 à 12:18
/*Resalut. Voila, au PLUS SIMPLE et en respectant au maximum ton code
je te propose une solution pour LES FONCTIONS et éviter les GOTOS .


fonction void Calcul() = soit un bloc d'instructions qui regoupe une grande partie
de ton programme.
ici la fonction Calcul() est déclaré avant le la fonction principale.
Si tu placais ta fonction après, alors tu devrais déclarer le prototype
de ta fonction avant main()
EXEMPLE =

#include
void Calcul(); // PROTOTYPE DE LA FONCTION.

void Calcul()
{
ton code
}

void main()
{
ton code
}

VOila, j'espere que ca pourra t'aider. Bonne continuation.
------------------------------------------ */

#include
#include <stdlib.h>

void Calcul()
{

int a;
float b,c,d,e,f,g;
cout<<"tapez le nombres d'heures de votre forfait internet
";
cin>>e;

cout<<"tapez le nombres de jours du mois (1=30,2=31,3=29)
";

cout<<"
";

do{ // ici, une boucle post-testée. elle effectue son test de continuation à la fin
//de la boucle et tant que l'entrée n'est pas valide (entre 1 et 3), l'utilisateur
// devra recommencer. Il existe bien sur, d'autres types de boucles...


cin>>a;



switch (a)
{
case 1 : c=e/30;
break;
case 2 : c=e/31;
break;
case 3 : c=e/29;
break;

}

if ( a > 3 )cout << "Erreur: Choix compris entre 1 et 3" <<endl;
// si supérieur à 3, onmarque un message d'erreur. :)

}while ((a< 1)||(a > 3)); // attente d'un chiffre entre 1 et 3

//sinon a est correcte et on passe à la suite...

cout<<"tapez le jour actuel
";
cin>>b;
d=c*b;
cout<<"tapez le nombres d'heures que vous avez utilise ce mois ci
";
cin>>f;
g=d-f;
if (g>0)
{
cout<<"il vous reste "<<g<<" heures pour aujourd'hui
";
}
if (g<0)
{
cout<<"vous avez depasse votre forfait de "<<g<<" heures pour aujourd'hui
";
}

} // fin de la fonction Calcul


void main()
{

cout<<"-------------------------------------------------------------------------------
";
cout<<"----------------- PROGRAMME DE CALCUL DE LA CONSAMATION INTERNET --------------
";
cout<<"-------------------------------------------------------------------------------
";
cout<<"-------------------------- ecrit par Anthony Legrand --------------------------
";
cout<<"-------------------------------------------------------------------------------
";
cout<<"
""
""
";

Calcul(); // insertion du code a cet endroit dans le programme..

int a=0;
cout<<"pour recomencer, tapez 1, pour arreter tapez 2
";
cin>>a;
switch (a)
{
case 1 :
Calcul();
break;

default : // en realité si tu touche autre que 2, le programme
return 0; // se fermera aussi
}

} // fin de main()
Irsla Messages postés 8 Date d'inscription mardi 14 janvier 2003 Statut Membre Dernière intervention 22 décembre 2003
21 déc. 2003 à 16:34
oui les fonctions , c toujours dificile qd on debute, moi j'aurai plutot tendance a te conseiller de revoir les typage des variable , ainsi eviter les phrases du style :"vous avez depasse votre forfait de -15,25 heures pour aujourd'hui"

parce que perso je ne connais aps les heures negative (d'un abs()) resoudra sans pb 2emement je ne sias pas que 0,25 heures correspond a 15 minutes (et la je te conseille histoire de jouer avec les chiffre de recoder la fonction qui permet de donner le nombre d'heures ainsi que le nombre de minutes)

voila ;) sinon c pas mal et ca change des convertisseurs (arf oui celle la je l'avais faite lol )

bon courage et continu

Irsla
D1m3x Messages postés 402 Date d'inscription samedi 28 décembre 2002 Statut Membre Dernière intervention 21 juillet 2005 1
21 déc. 2003 à 16:09
C'est sur je te conseille bien sur également les fonctions..

Saros:
cout<<"tapez le nombres de jours du mois (1=30,2=31,3=29)
";

pourquoi est-ce que l'user aurait-il des problèmes lorsque le mois est de 29 jours, ce serait plutôt lorsque le mois est de 28 jours qu'il y aura un problème! ;)

anthonyl, essaye de nous faire une petite mise à jour avec des fonctions.. comme ça si t'as encore des problème on sera la :)

Ciao ;)
Saros Messages postés 921 Date d'inscription vendredi 20 décembre 2002 Statut Membre Dernière intervention 23 septembre 2010
21 déc. 2003 à 10:23
Cf plus haut, si ce n'est que l'utilisateur est un peu embêté si le mois fait 29 jours...
Sinon, bon courage pour la suite
Saros
cs_muntoya Messages postés 18 Date d'inscription dimanche 2 février 2003 Statut Membre Dernière intervention 22 décembre 2003
20 déc. 2003 à 20:21
Salut,
Clair, il faut utiliser les fonctions. De plus, n' ajoutes pas des parenthèses pour afficher tes textes, cela est inutile. :-) ...
Oki, sinon je te dis bonne continuation ...

Muntoya.
cs_anthonyl Messages postés 1 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 20 décembre 2003
20 déc. 2003 à 20:09
tout d'abord merci de me conseiller c'est en effet mon premier programme et j'ai visé au plus simple mais je serait content de pouvoir etre conseillé par tous ceux qui on plus d'experience que moi!

tous vos comentaires sont les bienvenus
cordialement

-Tony-
randiox Messages postés 17 Date d'inscription mercredi 30 avril 2003 Statut Membre Dernière intervention 6 février 2005
20 déc. 2003 à 18:55
Salut, juste pour dire que 'goto' est tres décomseilé en c++, ce n'est plus du Ti-basic ;), essaye avec des fonctions.

cordialement,
randiox
Rejoignez-nous