Bonsoir,
Je commence à programmer en C (sous linux avec le compilateur gcc 4.0), il nous est demandé de faire un programme pour résoudre une équation du 2nd degré, jusque là ok, mais si j'utilise le type short à la place de int les calculs sont faux, quelqu'un peut-il me dire pourquoi?

Merci, voici le 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
 
#include <stdio.h>
#include <math.h>
 
main ()
{
  int a, b, c, delta; //ne fonctionne pas avec short
  printf("\nEntrez les 3 coefficients de l'equation du 2nd degre", a, b, c\n");
  scanf("%d %d %d",&a,&b,&c);
  if (a != 0)
  {
    printf("\nvaleur de delta = %d\n",delta = pow(b,2) - (4*a*c));
    if (delta > 0)
      printf("\nla racine 1 = %.2f et la racine 2 = %.2f\n",((-b + sqrt(delta)) / (2 * a)), ((-b -(sqrt(delta))) / (2 * a)));
/* la fct sqrt() renvoie un double, donc pas besoin de changement de type)*/
    else if (delta == 0)
      printf("\nla racine = %.2f\n",-(float)b/(2 * a));
        else printf("\npas de racine reelle\n");
  }
else printf("\n pas une equation du 2nd degre");
}