IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Problème avec l'appel d'une fonction


Sujet :

C

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2017
    Messages : 1
    Par défaut Problème avec l'appel d'une fonction
    Bonjour,

    j'ai un petit problème dans mon programme . La fonction affiche ( Ligne 30) ne fonctionne pas correctement ,je suis censé obtenir des valeurs différentes .Alors que avec la fonction je n'obtiens toujours la même réponse .Merci de préciser mes erreurs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    # include <stdlib.h>
    # include <stdio.h>
    # include <tgmath.h>
     
    void init(int n_part,float x[n_part],int n_step);
    void init(int n_part,float x[n_part], int n_step){
      int i,h;
      for(h=0;h<n_step;h++){ // je initialise le tableau 
       for(i=1;i<=n_part;i++){
         x[i]=0;
        }
      }
     }
     
    void move(int n_part,float x[n_part],int n_step);
    void move(int n_part,float x[n_part],int n_step){
      int k,g;
      float dxi;
      for(g=0;g<n_step;g++){ //je affecte au tableau des valeurs aléatoires
         for(k=1;k<=n_part;k++){
          dxi=2*(rand()/(RAND_MAX+1.))-1;
          x[k]=dxi;
     
         }
      }  
    }
     
    void affiche(int n_part, float x[n_part],int n_step);
    void affiche(int n_part,float x[n_part],int n_step ){
      int j,c;
      for(c=0;c<n_step;c++){  // je affiche les valeurs calculé avec la fonction void
        for(j=1;j<=n_part;j++){
          printf("x[%d]=%g\n",j,x[j]);
          }
        }
      }
     
    int main(void){
      int n_part,n_step;  //je declare les variables 
      printf("saisir un nombre entier\n");
      scanf("%d%d",&n_part,&n_step);
      printf("la vlaeur saisie n_part = %d et n_step = %d\n",n_part,n_step);
      float x[n_part];
      init(n_part,x,n_step); // j'applle les differentes fonctions
      move(n_part,x,n_step);
      affiche(n_part,x,n_step);
     
     
      exit(EXIT_SUCCESS);
    }
    les résultat donné par le terminal :
    saisir un nombre entier
    6
    2
    la vlaeur saisie n_part = 6 et n_step = 2
    x[1]=-0.329554
    x[2]=0.536459
    x[3]=-0.444451
    x[4]=0.10794
    x[5]=-0.0452059
    x[6]=0.257742
    x[1]=-0.329554
    x[2]=0.536459
    x[3]=-0.444451
    x[4]=0.10794
    x[5]=-0.0452059
    x[6]=0.257742

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 599
    Par défaut
    Bonjour,

    Le code de la fonction affiche est :
    recommencer 2 fois : "afficher le contenu du tableau."
    Il affiche donc forcément 2 fois la même chose. La boucle des "step" doit être placée à tout autre endroit pour avoir :
    recommencer 2 fois : " init, puis move puis affiche. "

    Et attention, les indices des tableaux vont de 0 à N-1, tu les utilises de 1 à N, cela semble marcher mais c'est une erreur grave qui pourrait faire de gros dégats.

Discussions similaires

  1. Réponses: 4
    Dernier message: 22/03/2008, 12h06
  2. Réponses: 2
    Dernier message: 03/10/2007, 22h29
  3. [ImageMagick] Appel d'une image ?
    Par nerazzurri dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 30/09/2007, 12h58
  4. problème avec l'utilisation d'une fonction
    Par mcspawn dans le forum Langage
    Réponses: 6
    Dernier message: 06/06/2007, 15h39
  5. problème avec l'appel d'une fonction
    Par mademoizel dans le forum ASP
    Réponses: 5
    Dernier message: 26/06/2006, 15h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo