Problème en C : Extraction de racine carrée
djee
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
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,