Calculatrice Scientifique

Makia42 Messages postés 29 Date d'inscription lundi 11 janvier 2010 Statut Membre Dernière intervention 19 septembre 2010 - 19 sept. 2010 à 14:32
eliramomo Messages postés 14 Date d'inscription jeudi 4 juin 2009 Statut Membre Dernière intervention 22 septembre 2010 - 22 sept. 2010 à 14:46
Bonjour tout le monde,

Je travaille sur l'écriture d'une calculatrice simple fonctionnant de la manière suivante :

- Je déclare PI comme une constante
- Je souhaite que les 4 opérations élémentaire sur entier soit dans unique fichier source et que les 4 opération élémentaire sur flottant soit dans un autre fichier source
- enfin les 2 opération racine carré et puissance seront toute deux dans un autre fichier source

Mon problème se situe au niveau des opération sur entier et sur flottant car je n'arrive pas à trouver une méthode me permettant de tester l'entrée clavier pour savoir de quel type de donnée il s'agit.

Voici mon avancement actuel :
 programme d'une calculatrice scientifique

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//#include 
//#include <float_op.h>
//#include <others_op.h>

#define PI 3.1415

void typtest(int,float,char *);
long nb =0;

int main(void)
{

long op,nb1 0,nb2 0,resultat = 0;
int i 0; float x 0; char pi[3];
printf("Calculatrice Scientifique\n\n\r");
printf("Choisissez l'operation a effectuer:\n\n");
printf("1.Addition:\n");
printf("2.Soustraction:\n");
printf("3.Multiplication:\n");
printf("4.Division:\n");
printf("5.racine carre de :\n");
printf("6.Puissance :\n");
scanf("%ld",&op);

switch(op)
{
case 1:
printf("Entrez le premier nombre:\n\r");
printf("Pour  PI(= 3.1415) taper : pi \n\r");
scanf("%d%f%*s",&i,&x,&pi);
typtest(i,x,pi);

printf("Entrez le deuxieme nombre:\n\r");
printf("Pour  PI(=3.1415) taper : 2\n\r");
scanf("%d%f%*s",&i,&x,&pi);
typtest(i,x,pi);

break;
case 2:
printf("Entrez le premier nombre:\n\r");
scanf("%ld",&nb1);
printf("Entrez le deuxieme nombre:\n\r");
scanf("%ld",&nb2);

resultat = nb1 - nb2;
printf("%ld - %ld = %ld \n\r",nb1,nb2,resultat);
break;
case 3:
printf("Entrez le premier nombre:\n\r");
scanf("%ld",&nb1);
printf("Entrez le deuxieme nombre:\n\r");
scanf("%ld",&nb2);

resultat = nb1 * nb2;
printf("%ld * %ld = %ld \n\r",nb1,nb2,resultat);
break;
case 4:
printf("Entrez le premier nombre:\n\r");
scanf("%ld",&nb1);
printf("Entrez le deuxieme nombre:\n\r");
scanf("%ld",&nb2);

resultat = nb1 / nb2;
printf("%ld / %ld = %ld \n\r",nb1,nb2,resultat);
break;
}
return 0;
}

void typtest(int a, float b,char *c)
{	

 	if(a !=0 ){
 	printf("nombre entier : %d\n",a);
 	return(nb = a);
 	}
 	
else if(b != 0){
 	printf("nombre flottant : %f\n",b);
 	return (nb = b);
 	}
 	
else if(c != 0){
printf("pi(3.1415)");
nb = 3.1415;
return (nb = 3.1415);
}
 	
}



A la compilation j'ai 5 warning :

calc_scientifique.c: In function ‘main’:
calc_scientifique.c:35: warning: too many arguments for format
calc_scientifique.c:40: warning: too many arguments for format
calc_scientifique.c: In function ‘typtest’:
calc_scientifique.c:80: warning: ‘return’ with a value, in function returning void
calc_scientifique.c:85: warning: ‘return’ with a value, in function returning void
calc_scientifique.c:91: warning: ‘return’ with a value, in function returning void


Pourriez vous me guidez sur une piste éventuel ?
Merci
Cordialement.

1 réponse

eliramomo Messages postés 14 Date d'inscription jeudi 4 juin 2009 Statut Membre Dernière intervention 22 septembre 2010
22 sept. 2010 à 14:46
bonjour,
deja vous declarer typtest void , et vous voulez qu'elle retourne une valeur ?? faut savoir changer le type de la fonction soit enlever le return
bonne chance
0
Rejoignez-nous