begin process at 2012 02 09 20:57:38
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

If() et les nombres à virgules


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

If() et les nombres à virgules

mardi 3 février 2004 à 22:14:13 | If() et les nombres à virgules

Jolfulorc

Bonjour,
J'ai un prog qui tourne comme ceci : il élève un nombre x à une puissance n et la compare avec une équation contraire (n puissance x). Les X sont increnmenté nomalement (x=x+interval;).
Tout fonctionne très bien avec un interval entier ou qui est dans la suite 0.5/2, 0.5/4 ....
Mais avec un interval de 0.1 : aucune solution alors que j'ai entré exactment les meme données !!!!!

Comment faut-il faire pour résoudre ce problème ?
Mes variables sont des float (j'ai essayé avec double, ca change rien...)

Jolfulorc,
Qui vous remercie d'avance
mercredi 4 février 2004 à 09:21:06 | Re : If() et les nombres à virgules

hilairenicolas


La je pense qu'il serait temps de nous montrer un bout de code
mercredi 4 février 2004 à 14:50:30 | Re : If() et les nombres à virgules

Jolfulorc

le voilà en entier (il n'est pas long, ne vous en fait pas :D)

#include <stdio.h>
#include <iostream.h>
#include <math.h>

int main()
{
float x, max, resultat, resultat2, intervalle, equation, nbres=0;

cout<<"|------------------------|\n| Math2\t: Equations supp |\n|------------------------|";
getchar();

cout<<"\nRecherche des X pour l'equation n^x = x^n ...\nVeuillez taper le nombre N (N+) : ";
cin>>equation;

cout<<"Veuillez taper le nombre max de la serie (N+) : ";
cin>>max;

cout<<"Veuillez taper le nombre min de la serie (N-) : ";
cin>>x;

cout<<"Veuillez taper le nombre d'intervalle dans la serie (R+) : ";
cin>>intervalle;
cout<<"--------------------------------------------------------"<<endl;
do {
resultat = pow(x,equation);
resultat2 = pow(equation,x);
if (resultat == resultat2) { nbres++; cout<<"\nX = "<<x<<"\t Resultat x^"<<equation<<" : "<<resultat<<"\t Resultat "<<equation<<"^x : "<<resultat2<<endl; }
cout<<x<<"\n";
x = x + intervalle;
resultat = resultat2 = 0;
} while (x < max+intervalle);
cout<<"\n--------------------------------------------------------"<<endl;

cout<<"\nLe programme a tourve "<<nbres<<" solution(s) pour l'equation x^"<<equation<<" = "<<equation<<"^x"<<endl;

printf("\nAlors ? Heureux ?");
getchar(); getchar();
}


Merci,
Jolfulorc
jeudi 5 février 2004 à 01:20:05 | Re : If() et les nombres à virgules

ymca2003

le test
if (resultat == resultat2)

est assez dangeureux avec des nombres à virgules. En effet, la représentation en mémoire est une troncature des nombres rééls. De plus, les nombres sont représentés en base 2 et pas 10. C'est pour ça que ça marche avec les nombres entiers et les intervales du type 0.5/2^n car dans ce cas les nombres ne sont pas tronqués. Par contre 0.1 (1/10) est arrondi en base 2 de la même façon que 1/3 en base 10.

Au lieu de faire un test d'égalite, fait un test avec une marge d'erreur (0.0001 ou 0.00001 par exemple).
jeudi 5 février 2004 à 13:03:01 | Re : If() et les nombres à virgules

Jolfulorc

Ok, merci bcp
Jolfulorc
jeudi 5 février 2004 à 13:16:28 | Re : If() et les nombres à virgules

Jolfulorc

lol, mais tu ne pourrais pas me montrer un exemple de test de marge d'erreur ? J'arrive pas à en trouver en plus c'est assez urgent

Merci d'avance ...
Jolfulorc
jeudi 5 février 2004 à 21:21:43 | Re : If() et les nombres à virgules

ymca2003

float val1;
float val2
float err = 0.0001f;

marge absolue :
if(fabs(val1-val2)<err)
{
//val1 et val2 égaux à 0.0001 près
}

marge relative (tester si égaux à 0 avant de faire la division):
if(fabs(val1-val2)/val1 < err)
{
// val1 et val2 égaux à un pourcentage près
}

à toi de faire des tests pour voir ce qui est le mieux.
vendredi 6 février 2004 à 16:08:52 | Re : If() et les nombres à virgules

Jolfulorc

Merci bcp pour la technique, mais ca change rien au résultat, toujours aucun résultat !
Jolfulorc
vendredi 6 février 2004 à 16:50:27 | Re : If() et les nombres à virgules

ymca2003

Peux-tu me mettre un exemple qui est censé donner un résultat et que le prog ne trouve pas ?
dimanche 8 février 2004 à 10:18:19 | Re : If() et les nombres à virgules

Jolfulorc

Vois par toi-même :
correct :


incorrect :

Jolfulorc

1 2

Cette discussion est classée dans : interval, nombres, virgules, puissance


Répondre à ce message

Sujets en rapport avec ce message

puissance 4 en c [ par girlweeb ] je recherche le jeux puissance 4 en c , si possible !qq un pourrait il me venir en aide? Probleme sur un programme qui calcule un pgcd [ par El loco ] Voila j ai un probleme sur le programme suivant, il marche correctement avec une grande serie de nombres mais quand je tape 15 et 32 il me donne un pg puissance 4 en C [ par djouje ] c'est tres important pour moi il me faudrait ce petit jeu je remercie toute personne pouvant me venir en aide .Merci et bonne prog. class pour manipuler des grands nombres [ par Orkblutt ] Salut,j'aimerai implementer une classe qui me permettrai de manipuler (+,-, /,*,%) des grands nombres (Nb>32bits) mais je ne sais pas du tout comment mise à la puissance... [ par couriousous ] HEllo!Comment mettre à la puissance X une variable. Pas seulement faire x*x*x autant de fois qu'on veut mais aussi pouvoir faire x^(1/3) pour racine c please..J'aimerai avoir un exemple de puissance 4 avec IA [ par scorpiwolf ] Si quelqu'un a un puissance 4 avec intelligence artificielle donc mode 1 joueur, j'aimerai l'avoir come exemple, je vous remercie... je suis desespere... je cherche un puissance 4 en mode 1 joueur IA [ par scorpiwolf ] Si quelqu'un a un puissance 4 avec intelligence artificielle donc mode 1 joueur, j'aimerai l'avoir come exemple, je vous remercie... Cas des tres grds nombres en C [ par unclecrufek ] slt a tousJ'ai un projet de math a realiser en C:convertir des nombres d'une base a une autre.Ce n'est pas bien complique, sauf qu'il faut que j'envis traviller avec de grands nombres [ par alfred289 ] est-ce que quelqu'un aurait une façon simple de travailler avec de très grands nombres ( des miliers de chiffres par exemple) Puissance 4 Help [ par Strange12 ] je recherche un fichier source plutôt simple en C du jeu Puissance 4.Si vous avez un truc à me proposer répondé moi vite


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,655 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales