Petite calculatrice en dos utilisant une classe

5/5 (13 avis)

Vue 14 106 fois - Téléchargée 669 fois

Description

une petite simple classe qui permet de comprendre le principe des tites classes

Source / Exemple :


//programme gerant une calculatrice avec des classes
#include <iostream.h>

// on déclare notre classe calculatrice
class calculatrice
{
	// les données sont en public, c'est à dire que toutes les
	// fonctions peuvent acceder aux données de la classe.
	// Ssi public est remplace par private ou protected
	//la fonction boucle() ne peut pas acceder aux données
public:
	float nombreA , nombreB;
	//déclaration des fonctions membres d'une classe qui servent
	//à faire agir un objet
	void addition();
	void multiplication();
	void soustraction();
	void division();
};

// fonction membre de la classe calculatrice
void calculatrice::addition()
{
	cout << "1er nombre: " << endl;
	cin >> nombreA ;
	cout << "second nombre: " << endl;
	cin >> nombreB ;
	float addition = nombreA + nombreB;
	cout << " " << nombreA << "+ " << "" <<  nombreB << "= "<< addition<<"\n";
}

void calculatrice::soustraction()
{
	cout << "1er nombre: " << endl;
	cin >> nombreA ;
	cout << "second nombre: " << endl;
	cin >> nombreB ;
	float soustraction = nombreA - nombreB;
	cout << " " << nombreA << " - " << "" <<  nombreB << "= "<< soustraction <<"\n";
}

void calculatrice::multiplication()
{
	cout << "1er nombre: " << endl;
	cin >> nombreA ;
	cout << "second nombre: " << endl;
	cin >> nombreB ;
	float multiplication = nombreA * nombreB;
	cout << " " << nombreA << "* " << "" <<  nombreB << "= "<< multiplication <<"\n";
}

void calculatrice::division()
{
	cout << "1er nombre: " << endl;
	cin >> nombreA ;
	cout << "second nombre: " << endl;
	cin >> nombreB ;
	float division = nombreA / nombreB;
	cout << " " << nombreA << "/ " << "" <<  nombreB << "= "<< division <<"\n";
}

// fonction boucle() qui permet le choix d'une des fonctions membres
void boucle()
{
	//l'objet calcul est crée en statique
	calculatrice calcul;
	//initialisation de characteres qui permettent le choix
	char A;
	char b = 'm';
	char c = 'a';
	char d = 'd';
	char s = 's';
	cout << "Addition(a) ou multiplication(m) ou soustraction(s) ou division(d)? " ;
	cin >> A ;
	if ( A == c )
	{
	// on appelle la fonction addition d'un objet
	// (l'objet calcul de la classe calculatrice)
	calcul.addition();
	}
	if (A == b)
	{
	calcul.multiplication();
	}
	if ( A == d )
	{
	calcul.division();
	}
	if (A == s)
	{
	calcul.soustraction();
	}
}

void main()
{	
	// dans main on déclare une boucle sans fin qui fait repeter
	// la fontcion en boucle
	while (1)
	{
	boucle();//fonction void boucle() appelée
	}	
}

Codes Sources

A voir également

Ajouter un commentaire Commentaires
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 !
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.
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 à 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 à 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 ?

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.