Bonjour, voila j ai un petit problème avec une calculette que j essaie de programmer, le problème, c'est que pour la faire marcher j ai décidé de transformer des chaines de char contenant des chiffres, en int, et ces chaines de char sont directement tirés des arguments (*argv), seulement, après le passage dans mes fonctions de conversion, le premier argument(sans compter le nom du programme) est bel et bien transformé en int tel quel, ( le deuxième correspond a l’opérateur + - / * etc..) et le troisième lui par contre part complètement en cacahuète, alors qu il passe par la même fonction de conversion :/ il se transforme en trucs pas possibles, et ensuite l'opération se fait entre mon premier int qui est bon, et mon deuxième int qui s est transforme en truc bizarre sans raison.

edit : si c'était possible aussi de me trouver un moyen d'afficher mon résultat sans printf ce serait cool.

Si vous pouviez m'aider ce serait sympathique:

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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
 
#include <stdio.h>
#include <unistd.h>
 
int		ft_sum(int j, int k);
int		ft_mod(int j, int k);
int		ft_mult(int j, int k);
int 	ft_div(int j, int k);
int 	ft_sub(int j, int k);
int ft_convert_to_real_numbers(char *str1);
int verif_numbers_are_present(char *s1);
 
 
int calc(int j, char op, int k)
{
int(*do_op[5])(int, int);
char recherche_op[5];
int i;
 
i = 0;
do_op[0] = &ft_sum;
do_op[1] = &ft_sub;
do_op[2] = &ft_mult;
do_op[3] = &ft_div;
do_op[4] = &ft_mod;
recherche_op[0] = '+';
recherche_op[1] = '-';
recherche_op[2] = '*';
recherche_op[3] = '/';
recherche_op[4] = '%';
 
 
while (i < 5)
{
if (op == recherche_op[i])
{
return (do_op[i](j, k));
}
i++;
}
}
 
int		ft_div(int j, int k)
{
	int	d;
	d = j / k;
	return(d);
}
 
int		ft_mod(int j, int k)
{
	int m;
	m = j % k;
	return(m);
}
 
int		ft_mult(int j, int k)
{
	int m;
	m = j * k;
	return(m);
}
 
int		ft_sum(int j, int k)
{
	int s;
	s = j + k;
	return(s);
}
 
int 	ft_sub(int j, int k)
{
	int s;
	s = j - k;
	return (s);
}
 
 
int ft_convert_to_real_numbers(char *str1)
{
	int size;
	int i;
	int j;
 
	size = 1;
	j = 0;
	i = 0;
 
	while(str1[i] != '\0')
	{
		i++;
		size *= 10;
	}
	i = 0;
 
	while(str1[i] != '\0')
	{	
		size /= 10;
		j = j + ((str1[i] - 48) * size);
		i++;
	}
	return(j);
}
 
int verif_numbers_are_present(char *s1)
{
 
	int i;
	int x;
	int converted;
 
	char vc1[x];
 
	converted = 0;
	i = 0;
	x = 0;	
 
	while(s1[i] != '\0')
	{
		while((s1[i] >= 48) && (s1[i] <= 57))
		{
			vc1[x] = s1[i];
			x++;
			i++;
		}
		i++;
	}
 
 
	return(ft_convert_to_real_numbers(vc1));
}
 
 
 
 
int main(int argc, char **argv)
{
char op;
int j;
int k;
int result;
 
j = 0;
k = 0;
 
if (argc != 4)
{
return (0);
}
op = argv[2][0];
 
j = verif_numbers_are_present(argv[1]);
k = verif_numbers_are_present(argv[3]);
 
 
result = calc(j, op, k);
if(result != 0)
{
  printf("%d", result);
}
return(0);
}