Calculatrice v1.0

Soyez le premier à donner votre avis sur cette source.

Vue 3 287 fois - Téléchargée 148 fois

Description

Bon, beh c t plutot dur pour un débutant comme moi en c++. Mais j'y suis arrivé, c le principal. Cette version sait faire tous les calculs de base avec des entiers. Je suis en train de l'améliorer afin de pouvoir faire des calculs avec des flottants, ainsi que de faire des calculs avec des parentheses, reste aussi a voir les priorités en tre signes... Enfin j'ai encore du pain sur la planche... ;-)

Source / Exemple :


//By Waxwork  24.10.2002

#include <iostream.h>
#include <ctype.h>
#include <string>

//Declaration des prototypes de fonctions
double oper(char* str, int& index);
double term(char* str, int& index);
void affich_msg(char indicator);
void supprime_blancs(char* str);

//Programme	
int main(void)

{  
	const MAX = 80;											
	char string[MAX];											
	int index = 0;												
	double result = 0.0;										
	char indicator = 'o';										
	
	cout << "Bienvenue dans ma calculatrice"
		 << endl
		 << "Veuillez taper l'operation a effectuer"
		 << endl;
	
	while(indicator != 'n')										
	{
		cin.getline(string,sizeof(string));					
		supprime_blancs(string);							
		result = oper(string, index);						
		cout << string << " = " << result
		     << endl;
		affich_msg(indicator);									
		cin.ignore (1);											
	}
	
			
	return 0;													
}   

double oper(char* str, int& index)							
{
	double value = 0.0;

	value = term(str, index);									

	//cout << "passage boucle";
			 
		switch(*(str + index))								
		{
		case '+' :											
			value += term(str, ++index);					
			break;		

		case '-' :												
			value -= term(str, ++index);					
			break;												

		case '*' :											
			value *= term(str, ++index);					
			break;

		case '/' :											
			value /= term(str, ++index);						
			break;
		
	}
	index = 0;													
	return value;											
}

double term(char* str, int& index)								
{
    double value = 0.0;										

    while(isdigit(*(str+index)))								
      value=10*value + (*(str+index++) - 48);				
	return value;											
}	

void affich_msg(char indicator)									
{
	cout << "Un autre calcul ? (o/n) "							
		 << endl;
	cin >> indicator;											
	if(indicator == 'o')										
		{
			cout << "Entrez le calcul suivant."
				 << endl;
		}
		else													
		{	cout << "A bientot!"
		         << endl;
			exit(1);
		}
}

void supprime_blancs(char* str)									
{
	int i = 0;													
	int j = 0;

	while((*(str + i) = *(str+j++)) != '\0')					
																
		
		if(*(str + i) != ' ')									
			i++;
		
	return; 
}

Codes Sources

A voir également

Ajouter un commentaire

Commentaire

Messages postés
249
Date d'inscription
mardi 16 juillet 2002
Statut
Membre
Dernière intervention
7 août 2003
1
Si tu veux un exemple de programme semblabe mais beaucoup plus gros: http://www.haypocalc.com/ avec codes sources et exliquation de calcules.

Si tu veux que ton programme soit plus performant utlise des pointeurs de fonctions. T'auras moins de codes à taper (pas besoin de faire un gros switch) et ce sera lus rapide.

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.