La racine carrée

Résolu
Bonjour, svp ou est l'erreur dans le code suivant ,car il ressemble logique ,ms la fonction rend 0
et merci d'avance.
#include<stdio.h>
#include<stdlib.h>

int racine_carre(int a)
{
int i,X=1;

for(i=1;i<=a;i++)
{
X=(1/2)*(X+(a/X));
}

return X;
}
int main()
{
int a,x;
printf("entrer un nombre positif : "); scanf("%d",&a);
x=racine_carre(a);
printf("racine carré de %d est %d",a,x);
}

Configuration: Windows / Chrome 86.0.4240.198

1 réponse

  1. Salut !

    Visiblement tu as un problème au niveau des types...
    Essaye comme ceci:
    int racine_carre(int a)
    {
     int i;
     float X = 1;
    
     for (i = 1; i <= a; i++)
      X = 0.5 * (X + (a / X));
    
     return X;
    }


    Tu auras probablement un warning au niveau du dépassement arithmétique...

    Mais ça devrait marcher.
    Si tu fais des calcules avec des int... Il te sort un résultat entier.

    1. Thanks, it works