PETITE CALCULATRICE EN DOS UTILISANT UNE CLASSE

ElVirolo Messages postés 15 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 11 mars 2003 - 23 déc. 2002 à 14:10
faticentre2006 Messages postés 1 Date d'inscription vendredi 22 décembre 2006 Statut Membre Dernière intervention 23 décembre 2006 - 23 déc. 2006 à 15:13
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/10197-petite-calculatrice-en-dos-utilisant-une-classe

faticentre2006 Messages postés 1 Date d'inscription vendredi 22 décembre 2006 Statut Membre Dernière intervention 23 décembre 2006
23 déc. 2006 à 15:13
si on programme ce code avec une classe qui contient un fichier.h et fichier.cpp et un main.cpp,où est ce qu'on va mettre la boucle parce que qu'on je compile il donne comme erreur 'boucle:undeclared identifier' alors que j'ai defini cette boucle dans le fichier.cpp
Zazour Messages postés 120 Date d'inscription mercredi 7 mai 2003 Statut Membre Dernière intervention 14 janvier 2006
11 août 2003 à 07:32
Pour arriver a compiler cet exemple je suis obligé de mettre "int main()" au lieur de "void main()".
quelqu'un peut il m'expliquer?
si besoin je suis sous DEV C++ 5.
trinitacs Messages postés 249 Date d'inscription mardi 16 juillet 2002 Statut Membre Dernière intervention 7 août 2003 2
30 déc. 2002 à 19:34
chavez >> C'est un avis subjectif tout comme je dis qu'il faut un tableau de fonction. Ce qu'il faut c'est enlever les if et les remplacer par une autre solution élégante tel que le switch ou bien sur un super tableau de pointeurs de fonctions :)
cs_chavez Messages postés 7 Date d'inscription dimanche 1 décembre 2002 Statut Membre Dernière intervention 25 juin 2003
25 déc. 2002 à 19:07
Je pense aussi qu'un switch serait le bienvenu.
trinitacs Messages postés 249 Date d'inscription mardi 16 juillet 2002 Statut Membre Dernière intervention 7 août 2003 2
24 déc. 2002 à 13:07
Kaid << "Mais là je trouve vraiment que c'est trop de code pour pas grand chose"
C'est sûr que c'est l'artiellerie lourde mais ce n'est pas trop de code non plus (du point de vu longueur).
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
24 déc. 2002 à 11:16
En fait je ne suis pas contre les tableaux de pointeurs de fonctions, je les utilise mais de manière dynamique pour associer un message de fenêtre Windows à une méthode.

Mais là je trouve vraiment que c'est trop de code pour pas grand chose, surtout qu'il faut faire la correspondance entre les entrées du menu ('a', 'd', 'm', 's') et les index dans le tableau.
gblade Messages postés 85 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 19 mai 2003
24 déc. 2002 à 10:22
Hum... Dites moi si j'me trompe mais ne serait-il pas plus simple de déclarer toutes les fonctions membres virtuelles et de se servir directement de la VMT comme tableau de pointeurs de fonctions ? Parce-que dans ce acs là on s'économiserait la peine de déclarer le tableau.
trinitacs Messages postés 249 Date d'inscription mardi 16 juillet 2002 Statut Membre Dernière intervention 7 août 2003 2
24 déc. 2002 à 09:15
Je trouve que oui. Une fois que t'as posé ton tableau de pointeurs de fonctions c'est aussi facil de rajouter des possibilités que dans un switch. Ça demande même moins de lignes de codes !

Il ne faut pas dire que les pointeurs de fonction sont compliqués. Il est vrai que la déclaration peut être parfois hardue quand ça retourne à nouveau un pointeur de fonction :) c'est vrai que c'est plus compliqué qu'un switch mais pas de beaucoup.
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
23 déc. 2002 à 23:04
typedef void (calculatrice::* ptrFonc)(void);

ptrFonc tabPtr[4]={calcul.addition, calcul.multiplication, calcul.division, calcul.soustraction};

(calcul.*tabPtr[0])();

Faire ca pour une addition, tu trouves ca simple ?
trinitacs Messages postés 249 Date d'inscription mardi 16 juillet 2002 Statut Membre Dernière intervention 7 août 2003 2
23 déc. 2002 à 20:20
Ça dépend. J'aime bien faire des tableaus de fonctions. Dans un cas comme celui-ci la rapidité n'est pas essentiel donc le 2 sont des bons choix.

Tu devrais faire des fonctions set et get dans ta classe, ainsi tu pourras mettre en private ou en protected les données.

//fonction get
int maclasse::get_donnee() const
{
return _donnee;
}

//fonction set
void maclasse::set_donnee( int d )
{
_donne = d;
}

PS: dans mes classe je commence toujours les noms de variable par _ afin que ce soit plus clair.
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
23 déc. 2002 à 17:52
Un switch() suffit amplement, c'est bien plus simple et compréhensible qu'un tableau de pointeurs de méthodes d'instances.
trinitacs Messages postés 249 Date d'inscription mardi 16 juillet 2002 Statut Membre Dernière intervention 7 août 2003 2
23 déc. 2002 à 14:43
Ou encore mieux: faire un tableau de fonctions ce qui te permettera de faire la meme chose qu'un switch ou que tes if en moins de 5 lignes ! Et en plus ce sera beaucoup plus rapide.
Sinon c'est une source propre.
ElVirolo Messages postés 15 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 11 mars 2003
23 déc. 2002 à 14:10
Pas mal, sauf que tu purrais remplacer tes if's par un switch !
Rejoignez-nous