Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2781 connectés 

  FORUM HardWare.fr
  Programmation
  C

  probleme avec calcul exponentiel

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

probleme avec calcul exponentiel

n°894845
Anormal13
Posté le 10-11-2004 à 02:27:24  profilanswer
 

Salut à tous;
J'ai besoin d'une petite aide, j'essaie d'afficher les points de la courbe exponentielle de x(y=exp(x)). L'utilisateur saisit d'abord l'intervalle dans lequel il désire avoir les points de la fonction ainsi que le nombre de points voulue.
Le problemes c'est quand j'execute mon programme je n'ai pas les bonnes valeur qui s'affiche. Quelqu'un peut il me signaler ou se trouve l'erreur ?
 
1.#include <stdio.h>
2.
3.int main()
4 .{
5.    int nb_n,a;
6.    int cpt,cpt1;
7.    float born_min;
8.    float born_max;
9.    float x;
10.  float y;
11.  float pas;
12.  float som;
13.
14.    printf("Min? \n" );
15.    scanf("%f", &born_min);
16.    printf("Max? \n" );
17.    scanf("%f", &born_max);
18.    printf("nombre de points? \n" );
19.    scanf("%d", &nb_n);
20.    pas=((born_max-born_min)/nb_n);
21.    x=born_min;
22.    y=1;
23.    som=0;
24.    for(cpt=0;cpt<nb_n;cpt++)
25.      {
26.        a=1;
27.         for(cpt1=0;cpt1<20;cpt1++)
28.         {
29.          y=(x/a)*y;
30.          som=som+y;
31.          a++;
32.         }
33.         printf("%f %f \n",x, som);
34.         x=(x+pas);
35.        }
36.    system("pause" );
37.}


---------------
Hihi j'suis là ou pas?
mood
Publicité
Posté le 10-11-2004 à 02:27:24  profilanswer
 

n°894850
Taz
bisounours-codeur
Posté le 10-11-2004 à 02:37:21  profilanswer
 

t'as le droit d'utiliser i, j comme compteur de boucle :o
 
du reste c'est un problème d'algo. revois ton algorithme. fais tourner ton algo à la main.
 
 
mais attention que
((born_max-born_min)/nb_n);  
est un calcul entier et peut ne pas donner ce que tu veux (par exemple (10 - 5) / 3 va donner 1 et pas 1.6666...

n°894853
Anormal13
Posté le 10-11-2004 à 02:46:23  profilanswer
 

tu veux dire quoi par le fait que je peux utiliser i et j pour les boucles de compteur?
par contre pour le calcul du pas je suis sur de ce que j'ecris!
C'est un de mes tout premier programme alors faut etre indulgent avec le petit newbies que je suis  
 :hello:


---------------
Hihi j'suis là ou pas?
n°895574
c0wb0y
:d
Posté le 10-11-2004 à 20:33:23  profilanswer
 

il veut dire que cpt, cpt1 etc... c'est pas super lisible, car dans les standards de programmation classique, les compteurs de boucle s'appelle i, j, k...

n°895626
Anormal13
Posté le 10-11-2004 à 21:36:35  profilanswer
 

Ok merci  :jap:


---------------
Hihi j'suis là ou pas?
n°895871
Sve@r
Posté le 11-11-2004 à 12:32:57  profilanswer
 

Taz a écrit :

mais attention que
((born_max-born_min)/nb_n);  
est un calcul entier et peut ne pas donner ce que tu veux (par exemple (10 - 5) / 3 va donner 1 et pas 1.6666...


 
Suis pas d'accord ! Dans une opération, le calcul se fait dans le type de l'opérande le plus précis qui est présent dans le calcul. S'il y a des opérandes "int", "double" et "float", le calcul sera fait en "double".
"born_max" et "born_min" étant des float, le calcul sera flottant et "pas" contiendra la bonne valeur...
 
Juste que les parenthèses autour de l'opération ne sont pas obligatoires

Code :
  1. pas=(born_max - born_min) / nb_n;


Message édité par Sve@r le 11-11-2004 à 12:36:08
n°895952
Taz
bisounours-codeur
Posté le 11-11-2004 à 13:56:53  profilanswer
 

non. la promotion se fait étape par étape et pas globalement. les opérateurs sont unaire ou binaire, pas plus. donc non

n°896189
Sve@r
Posté le 11-11-2004 à 18:34:18  profilanswer
 

Taz a écrit :

non. la promotion se fait étape par étape et pas globalement. les opérateurs sont unaire ou binaire, pas plus. donc non


Hum... l'opérateur "expr ?e1 :e2" est souvent cité comme opérateur "ternaire"...
Je n'ai pas testé (et je ne pourrai pas tester avant lundi) mais même étape par étape, il me semble que le calcul commencera par faire "b - a" en valeur flottantes et que le résultat restera mémorisé tel quel. Puis ce résultat sera divisé par un "int" mais l'opération restera (devrait rester) float non ???

n°898444
Anormal13
Posté le 14-11-2004 à 21:25:34  profilanswer
 

L'opération reste float


---------------
Hihi j'suis là ou pas?

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  probleme avec calcul exponentiel

 

Sujets relatifs
VBscript problème de syntaxeprobleme d'espaces dans mon nom de fichier
Petit probleme d'indice.Problème forum PHPbb
problème désallocation mémoire (résolu)Problème sur preload "pourcentage" !!!
Probleme de DLL...probleme dans mon programme
[Avis] Coder en C sous OS X , pas de probleme ?Problème sur un algorithme (le vrai!!!)
Plus de sujets relatifs à : probleme avec calcul exponentiel


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR