Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

TROUVER LA RACINE CARRÉE ET LA RACINE CUBIQUE D'UN NOMBRE AVEC PLUS DE PRÉCISION (CHOIX DU NOMBRE DE CHIFFRES APRES LA VIRGULE)


Information sur la source

Catégorie :Maths & Algorithmes Classé sous : cubique, racine, carré, sqrt, mathématiques Niveau : Débutant Date de création : 11/03/2007 Date de mise à jour : 23/03/2007 17:46:28 Vu / téléchargé: 12 032 / 240

Note :
Aucune note

Commentaire sur cette source (1)
Ajouter un commentaire et/ou une note


Description

En effet Racine_carree.h contient la fonction nommée racine(double,int) mais également la fonction racine_cub(double,int).

Pour fonctionner cette fonction (racine()) necessite le nombre au carré et le nombre de chiffres qu'il faut apres la virgule. Cette fonction permet une plus grande precision que sqrt(). Un test comparatif opposant ces deux fonctions est exposé à la fin de l'éxécution du programme (disponible dans le zip) : il expose premierement le resultat trouvé avec racine() puis celui trouvé avec sqrt(). Le résultat obtenu par l'execution de cette fonction est un string contenant la valeur de la racine carrée du nombre désiré.

Pour fonctionner cette fonction (racine_cub()) necessite le nombre au cube et le nombre de chiffres qu'il faut apres la virgule. Le résultat obtenu par l'execution de cette fonction est un string contenant la valeur de la racine cubique du nombre désiré.
 

Source

  • #ifndef RACINE_CARREE_H
  • #define RACINE_CARREE_H
  • using namespace std;
  • string int_to_char(int nb) {
  • char nombre[16];
  • itoa(nb,nombre,10);
  • string texte(nombre);
  • return texte;
  • }
  • string racine(double nb_carre,int w) {
  • w++;
  • string renvoi;
  • if(nb_carre<0) {
  • renvoi="ERREUR : Un carre est forcement positif";
  • w=-1;
  • }
  • double precision(1);
  • double dernier(0);
  • for(int i(0);i<w;i++) {
  • for(int j(0);j>=0;j++) {
  • if((j*precision+dernier)*(j*precision+dernier)==nb_carre) {
  • i=w;
  • dernier+=j*precision;
  • renvoi+=int_to_char(j);
  • j=-100;
  • }
  • if((j*precision+dernier)*(j*precision+dernier)>nb_carre) {
  • if(j-1<0) i=w;
  • else {
  • dernier+=j*precision-precision;
  • renvoi+=int_to_char(j-1);
  • j=-100;
  • }
  • }
  • }
  • if(i==0) renvoi+=",";
  • precision=precision/10;
  • }
  • return renvoi;
  • }
  • string racine_cub(double nb_carre,int w) {
  • w++;
  • string renvoi;
  • if(nb_carre<0) {
  • renvoi="ERREUR : Un carre est forcement positif";
  • w=-1;
  • }
  • double precision(1);
  • double dernier(0);
  • for(int i(0);i<w;i++) {
  • for(int j(0);j>=0;j++) {
  • if((j*precision+dernier)*(j*precision+dernier)*(j*precision+dernier)==nb_carre) {
  • i=w;
  • dernier+=j*precision;
  • renvoi+=int_to_char(j);
  • j=-100;
  • }
  • if((j*precision+dernier)*(j*precision+dernier)*(j*precision+dernier)>nb_carre) {
  • if(j-1<0) i=w;
  • else {
  • dernier+=j*precision-precision;
  • renvoi+=int_to_char(j-1);
  • j=-100;
  • }
  • }
  • }
  • if(i==0) renvoi+=",";
  • precision=precision/10;
  • }
  • return renvoi;
  • }
  • #endif
  • // Un executable exploitant cette fonction
  • // est disponible dans le zip :
  • // Racine carree.ex_ qu'il faut renommé Racine carree.exe
#ifndef RACINE_CARREE_H
#define RACINE_CARREE_H

using namespace std;

string int_to_char(int nb) {
       char nombre[16];
       itoa(nb,nombre,10);
       string texte(nombre);
       return texte;
}

string racine(double nb_carre,int w) {
       w++;
       string renvoi;
       if(nb_carre<0) {
                renvoi="ERREUR : Un carre est forcement positif";
                w=-1;
       }
       double precision(1);
       double dernier(0);
       for(int i(0);i<w;i++) {
               for(int j(0);j>=0;j++) {
                          if((j*precision+dernier)*(j*precision+dernier)==nb_carre) {
                                   i=w;
                                   dernier+=j*precision;
                                   renvoi+=int_to_char(j);
                                   j=-100;
                          }
                          if((j*precision+dernier)*(j*precision+dernier)>nb_carre) {
                                   if(j-1<0) i=w;
                                   else {
                                        dernier+=j*precision-precision;
                                        renvoi+=int_to_char(j-1);
                                        j=-100;
                                   }
                          }
               }
               if(i==0) renvoi+=",";
               precision=precision/10;
       }
       return renvoi;
}

string racine_cub(double nb_carre,int w) {
       w++;
       string renvoi;
       if(nb_carre<0) {
                renvoi="ERREUR : Un carre est forcement positif";
                w=-1;
       }
       double precision(1);
       double dernier(0);
       for(int i(0);i<w;i++) {
               for(int j(0);j>=0;j++) {
                          if((j*precision+dernier)*(j*precision+dernier)*(j*precision+dernier)==nb_carre) {
                                   i=w;
                                   dernier+=j*precision;
                                   renvoi+=int_to_char(j);
                                   j=-100;
                          }
                          if((j*precision+dernier)*(j*precision+dernier)*(j*precision+dernier)>nb_carre) {
                                   if(j-1<0) i=w;
                                   else {
                                        dernier+=j*precision-precision;
                                        renvoi+=int_to_char(j-1);
                                        j=-100;
                                   }
                          }
               }
               if(i==0) renvoi+=",";
               precision=precision/10;
       }
       return renvoi;
}

#endif

// Un executable exploitant cette fonction
// est disponible dans le zip :
// Racine carree.ex_ qu'il faut renommé Racine carree.exe

Conclusion

:'(

Petit problème,
lors de l'utilisation de nombre décimaux tels que 0.09 ou 0.027,
le programme renvoi des valeurs proches de la réalité mais non exactes.

Exemple :
Si l'on met 0.09 pour le nombre au carré,
le programme renvoi 0.2999... à la place de 0.3.
Si l'on met 0.027 pour le nombre au cube,
le programme renvoi 0.2999... à la place de 0.3.

Besoin d'aide :
Si quelqu'un sait comment résoudre ce problème merci de me le communiquer au plus vite en commentaire de cette source.

Merci d'avance...

;) A bientôt! ;)
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

23 mars 2007 17:46:28 :
Ajout de la fonction : racine_cub(double,int).

Commentaires et avis

signaler à un administrateur
Commentaire de juju12 le 14/03/2007 21:01:42

C'est pas mal, voilà une source qui marche.
Je te suggère de rajouter une fonction permettant l'arrondi :
par exemple, pour racine(90,1), ta fonction retourne 9.4 alors que 9.5 est une valeur plus proche
(en fait ça fait 9.48...)
Bonne continuation

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Racine Cubique... [ par Joky ] Ra la la !!! Que des probl&#232;mes !!! AltFin = pow(27, 1/3);</ simplification racine carré, niveau ? [ par kjus ] J'ai fait un prog qui simplifie les racines carrées.Vous pensez que je met ca en niveau 1 ou 2 ?***raph*** racine carrée!!!! [ par dletozeun ] bonjour,j'essais d'utiliser la racine carré en C :sqrt()mais apperement ca ne fonctionne pas et je ne vois pas du tout d'ou ca vient:voici la partie q racine carré [ par devadip ] comment simplifier puis calculerC++28/C++7 Librairies mathématiques VS matlab [ par devilinside ] Devant coder une interface graphique en visual C++ pour un logiciel de calcul, je suis fort dépourvu.Le code original du coeur de calcul tourne sous m interuption de clavier [ par xav42 ] Bonjour, je suis étudiant et à mon iut on utilise turbo c++ qui date un peu mais bon... Voici mon probleme : j'ai un projet pour la fin de l'annee: f interuption de clavier [ par xav42 ] Bonjour, je suis étudiant et à mon iut on utilise turbo c++ qui date un peu mais bon... Voici mon probleme : j'ai un projet pour la fin de l'annee: f interuption de clavier [ par xav42 ] Bonjour, je suis étudiant et à mon iut on utilise turbo c++ qui date un peu mais bon... Voici mon probleme : j'ai un projet pour la fin de l'annee: f Séries mathématiques [ par Padou ] Quelqu'un peut-il m'aider et me dire comment on code les séries mathématiques du sinx, cosx, exponentielle et logarithmique. sinx= x-(x^3/3!)+(x^5/5!) Compilation [ par mohamado2001 ] je voudrais trouver qqe qui va m'aider en compilation a resoudre la grammaire des suites numériques et les fonctions mathématiques et les expressions


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version


HTC G1

Entre 449€ et 449€


Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,764 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.