Bonjour

Actuellement je souhaite créer un programme qui calcule les équations du second degré mais je rencontre quelques problèmes sur mes résultats et je ne comprends pas pourquoi.
Voici mon code :

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
 
 
/* Pour afficher un charactère */
void....display(char c)                                                       
{                                                                                
  write(1, &c, 1);                                                               
}                                                                                
 
/* Pour afficher un nombre */                                                                             
int.....put_nbr(int nb)                                                       
{                                                                                
  if (nb == -2147483647)                                                         
  {                                                                              
    write(1, "-2147483647", 11);                                                 
    return (0);                                                                  
  }                                                                              
  if (nb < 0)                                                                    
  {                                                                              
    display('-');                                                             
    nb *= -1;                                                                    
  }                                                                              
  if (nb > 9)                                                                    
  {                                                                              
    put_nbr(nb / 10);                                                         
    put_nbr(nb % 10);                                                         
  }                                                                              
  else                                                                           
    display(nb + '0');                                                         
  return (0);                                                                    
}                                                                                
 
/* Calcule la racine carré */ 
int.....square_root(int nb)                                                          
{                                                                                
  int...r;                                                                       
  int...i;                                                                       
 
  i = 1;                                                                         
  r = 1;                                                                         
  if (nb == 1)                                                                   
    return (1);                                                                  
  while (i < nb && i <= 46340 && nb < 2147483647)                                
  {                                                                              
    r = nb - (i * i);                                                            
    if (r == 0)                                                                  
      return (i);                                                                
    else if (r < 0)                                                              
      return (0);                                                                
    i++;                                                                         
  }                                                                              
  return (r);                                                                    
}                                                                                
 
void....equation(int *a, int *b, int *c)                            
{                                                                                
  int...D;                                                                       
  int...D2;                                                                      
  int...r1;                                                                      
  int...r2;                                                                      
 
  D = (*b * (*b)) - (4 * (*a) * (*c));                                           
  D2 = D;                                                                        
  if (D == 0)                                                                    
  {                                                                              
    r1 = ((-*b) / (2 * (*a)));                                                   
    put_nbr(r1);                                                              
    display('\n');                                                            
  }                                                                              
  if (D > 0)                                                                     
  {                                                                              
    r1 = (-*b - sqrt(D)) / (2 * *a);                                          
    r2 = (-*b + sqrt(D2)) / (2 * *a);
    put_nbr(r1);                                                  
    display('\n');                                                            
    put_nbr(r2);                                                                                                                       
  }                                                                              
  if (D < 0)                                                                     
    display('0');                                                             
}
Quand je rentre comme argument "1" "12" "1" (a = 1, b = 12, c = 1)
J'ai un discriminant de 140 > 0 donc normalement deux solutions qui sont censées être -11,9 (racine 1) et -0,08 (racine 2) environ. (vu que mes fonctions sont en int, les résultats devraient être arrondis si je ne dis pas de bêtises).
Mais mon programme me renvoie -6 pour chaque solution.
Une idée ?

Merci.