Petite calculatrice en dos utilisant une classe

Soyez le premier à donner votre avis sur cette source.

Vue 10 778 fois - Téléchargée 475 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
-
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
1 -
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
950
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006
-
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
1 -
Ç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
950
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006
-
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.