Makia42
Messages postés29Date d'inscriptionlundi 11 janvier 2010StatutMembreDernière intervention19 septembre 2010
-
19 sept. 2010 à 14:32
eliramomo
Messages postés14Date d'inscriptionjeudi 4 juin 2009StatutMembreDernière intervention22 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.
eliramomo
Messages postés14Date d'inscriptionjeudi 4 juin 2009StatutMembreDernière intervention22 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