Bonsoir tout le monde, dans la continuité du problème que j'avais posé plus tôt, je me retrouve avec un code qui m'oblige à convertir des entiers en réels et vice-versa.
Voyez plutôt :
Le problème qui se pose, est que pour certaines valeurs de n que je rentre, j'obtiens le résultat attendu, tandis que pour d'autres, le résultat n'est pas le bon à quelquechose près (+1, -1, plus une centaine, ou moins une centaine ...).Code:
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 #include <stdio.h> #include <math.h> #include <stdlib.h> int main(){ unsigned int n; double a,b,c,d; unsigned int e; double or,m; double result; while((scanf("%u",&n))==1){ if(n==0){ return(0); }if(n==1){ printf("%d\n",1); }else{ m=(double) n; or=(1+sqrt(5))/2; a=3-sqrt(5); b=sqrt(5)-1; c=sqrt(pow(or,a)); d=sqrt(pow(m,b)); result=c*d; e=(unsigned int) result; printf("%u\n",e); } } return(0); }
D'après vous, est-ce que les conversions entre doubles et non-signés sont faites de la bonne manière ?
Merci