problème avec les variables

problème avec les variables - C - Programmation

Marsh Posté le 28-09-2017 à 10:56:02    

Bonjour  
Je suis novice en programmation (formation biologie).J'ai une modélisation à faire pour Physique .J'ai essayé de coder mais cela un bout du temps que je me bloque sur une erreur .Pouvez - vous me dire d'où provient cette erreur ? .Merci d'avance  

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <tgmath.h>
  4. void initiale(int n_particule , float x[n_particule]); // declaration de la fonction //
  5. void initiale(int n_particule , float x[n_particule])  // je initialiser le tableau //
  6. {
  7. int i;
  8. for(i=0;i<=n_particule;i++){
  9.                        x[n_particule]=0;
  10.                       }
  11. }
  12. void afficher(int n_particule,float x[n_particule]); // je essaye d'afficher les valeurs de x[n_particule]
  13. void afficher(int n_particule,float x[n_particule])
  14. {
  15. int i;
  16. for(i=0;i<=n_particule;i++){
  17.                    printf( " la valeur calculé1 %g \n" ,x[n_particule]);
  18.                           }
  19. }
  20.        
  21. void move(int n_particule,float x[n_particule]);
  22. void move(int n_particule,float x[n_particule])
  23. {
  24. float dx;
  25. int i;
  26. for(i=0;i<=n_particule;i++){
  27.                     dx=(2*rand()/(RAND_MAX+1.))-1;// je calcule un nombre aléatoire compris entre  
  28.                     x[n_particule]=dx;                     // [-1;1]
  29.                     printf("la valeur calculé par dx = %g \n",x);
  30.                            }
  31. }
  32. int main(void){
  33. int n_particule;
  34. printf("valeur de \n" );
  35. scanf("%d",&n_particule);
  36. printf("valeur saisie = %d \n",n_particule);
  37. float x [n_particule];
  38. initiale(n_particule,x);
  39. printf("la valeur de init = %d ",n_particule);
  40. afficher(n_particule,x);
  41. move(n_particule,x);
  42. exit(EXIT_SUCCESS);
  43. }

 
 
diffusion.c:39:28: warning: format ‘%g’ expects argument of type ‘double’, but argument 2 has type ‘float *’ [-Wformat=]
                     printf("la valeur calculé par dx = %g \n",x);
 

Reply

Marsh Posté le 28-09-2017 à 10:56:02   

Reply

Marsh Posté le 28-09-2017 à 11:36:10    

tony15 a écrit :

Bonjour  
Je suis novice en programmation (formation biologie).J'ai une modélisation à faire pour Physique .J'ai essayé de coder mais cela un bout du temps que je me bloque sur une erreur .Pouvez - vous me dire d'où provient cette erreur ? .Merci d'avance  

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <tgmath.h>
  4. void initiale(int n_particule , float x[n_particule]); // declaration de la fonction //
  5. void initiale(int n_particule , float x[n_particule])  // je initialiser le tableau //
  6. {
  7. int i;
  8. for(i=0;i<=n_particule;i++){
  9.                        x[n_particule]=0;
  10.                       }
  11. }
  12. void afficher(int n_particule,float x[n_particule]); // je essaye d'afficher les valeurs de x[n_particule]
  13. void afficher(int n_particule,float x[n_particule])
  14. {
  15. int i;
  16. for(i=0;i<=n_particule;i++){
  17.                    printf( " la valeur calculé1 %g \n" ,x[n_particule]);
  18.                           }
  19. }
  20.        
  21. void move(int n_particule,float x[n_particule]);
  22. void move(int n_particule,float x[n_particule])
  23. {
  24. float dx;
  25. int i;
  26. for(i=0;i<=n_particule;i++){
  27.                     dx=(2*rand()/(RAND_MAX+1.))-1;// je calcule un nombre aléatoire compris entre  
  28.                     x[n_particule]=dx;                     // [-1;1]
  29.                     printf("la valeur calculé par dx = %g \n",x);
  30.                            }
  31. }
  32. int main(void){
  33. int n_particule;
  34. printf("valeur de \n" );
  35. scanf("%d",&n_particule);
  36. printf("valeur saisie = %d \n",n_particule);
  37. float x [n_particule];
  38. initiale(n_particule,x);
  39. printf("la valeur de init = %d ",n_particule);
  40. afficher(n_particule,x);
  41. move(n_particule,x);
  42. exit(EXIT_SUCCESS);
  43. }

 
 
diffusion.c:39:28: warning: format ‘%g’ expects argument of type ‘double’, but argument 2 has type ‘float *’ [-Wformat=]
                     printf("la valeur calculé par dx = %g \n",x);
 


 
a) Ton code devrait être indenté. C'est illisible tel quel.
 
b) Tu passes un pointeur (x) à la fonction printf alord que tu lui dis qu'elle doit afficher un flottant ('%g'). Si tu veux afficher dx passe dx en 2eme argument de la fonction.


Message édité par Anonymouse le 28-09-2017 à 11:40:54
Reply

Marsh Posté le 28-09-2017 à 20:01:51    

Hmm, quelques petits détails à faire attention avec ton code :
 
● Si tu déclares un tableau : float x [n_particule]; les indices valides pour ce tableau vont de 0 à n_particule-1. Toutes tes boucles itèrent de 0 à n_particule : pas bon.
 
● Tu fais plusieurs boucles du genre :

Code :
  1. for(i=0;i<=n_particule;i++)
  2. {
  3.    printf( " la valeur calculé1 %g \n" ,x[n_particule]);
  4. }


 
Ce n'est probablement pas n_particule que tu voulais utiliser comme indice, mais plutôt i (et remplacer le <= en < ).
 
● Pour ton erreur à la ligne 39, tu voulais sans doute écrire dx au lieu de x...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed