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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
// programme d'une calculatrice scientifique
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//#include <int_op.h>
//#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.