Calculatrice v1.0

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

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.