Problème en C : Extraction de racine carrée
djee
-
fiddy Messages postés 11653 Statut Contributeur -
fiddy Messages postés 11653 Statut Contributeur -
Bonjour,
J'essaye de programmer un programme semblable à la fonction sqrt de la bibliothèque math, qui s'arrête au nombre de décimales souhaitées.
Seulement voilà, à chaque essai, en changeant aussi bien le nombre voulu que celui de décimales, le programme me renvoi comme valeur 0, et je n'arrive pas à trouver d'où le problème vient.
Voilà le code :
Merci d'avance.
J'essaye de programmer un programme semblable à la fonction sqrt de la bibliothèque math, qui s'arrête au nombre de décimales souhaitées.
Seulement voilà, à chaque essai, en changeant aussi bien le nombre voulu que celui de décimales, le programme me renvoi comme valeur 0, et je n'arrive pas à trouver d'où le problème vient.
Voilà le code :
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
double tentative = 0, tentativeCarre = 0, ajout = 0, ajoutAjout = 0;
double puissanceDix = 0;
double extraction(double nombreRacineVoulue, double nombrePuissance)
{
{
while(puissanceDix != -nombrePuissance)
{
while(tentativeCarre < nombreRacineVoulue)
{
ajoutAjout++;
ajout = ajoutAjout * pow(10, puissanceDix);
tentative = ajout + tentative;
tentativeCarre = tentative * tentative;
}
tentative = tentative - ajout;
puissanceDix--;
}
}
return tentative;
}
double nombreRacineVoulue = 0, resultat = 0;
double nombrePuissance = 0;
int main()
{
printf("=== EXTRACTION DE RACINE PAR ALGORITHME ===");
printf("\n\nEntrez le nombre dont vous desirez la racine : ");
scanf("%lf", &nombreRacineVoulue);
printf("Entrer le nombre de decimales : ");
scanf("%lf", &nombrePuissance);
resultat = extraction(nombreRacineVoulue, nombrePuissance);
printf("\nLe resultat est : %f\n", &resultat);
}
Merci d'avance.
1 réponse
N'ayant pas détaillé tout le code, je ne sais si ma réponse sera satisfaisante, mais il est certain que la ligne
printf("\nLe resultat est : %f\n", &resultat);
ne peut que donner un mauvais résultat (d'ailleurs le compilateur doit râler!). Il faut écrire:
Bonne continuation.
printf("\nLe resultat est : %f\n", &resultat);
ne peut que donner un mauvais résultat (d'ailleurs le compilateur doit râler!). Il faut écrire:
printf("\nLe resultat est : %lf\n", resultat);
Bonne continuation.
"Je vous parlerai des autres symboles en temps voulu. Pour le moment, sachez que si vous voulez afficher un int vous devez utiliser %d, et pour un double vous utiliserez %f."
Source : https://openclassrooms.com/fr/courses/19980-apprenez-a-programmer-en-c/14118-un-monde-de-variables à la section "Afficher le contenu d'une variable".
Mille excuses.
car il connait le type de variable, '%f' est donc suffisant
Il est suffisant et même nécessaire. Pas de %lf dans un printf.
En fait dans le printf les float seront promues en double implicitement, donc pour les deux cas, on met %lf.
Cdlt,