[C] Fonction niveau debutant

Fonction niveau debutant [C] - C - Programmation

Marsh Posté le 10-07-2007 à 16:28:55    

Salut à tous j'ai une erreur sur l'appelation de la fonction mais je ne vois pas pourquoi, si vous voulez bien me donner une solution s.v.p.
voici, mon code:

Code :
  1. //3


Merci d'avance.

Reply

Marsh Posté le 10-07-2007 à 16:28:55   

Reply

Marsh Posté le 10-07-2007 à 16:33:01    

desole il y a une erreur, voici mon code:
#include <stdio.h>
#include <conio.h>
 
/* Enoncé: Écrire une fonction qui calcule la moyenne des valeurs contenues dans un *
 * tableau de 5 entiers.                                                           */
 
#define MAX_ELEM 5
float iTab[MAX_ELEM] = {2, 5, 4, 3, 1};
 
/* PROTOTYPE */
 float moy_tab(float iTab[]);
 
void main(void)
{
 /* Declaration des variables locales */
  float fResMoy;
 
 /* Appelle de la fonction */
  fResMoy = moy_tab(iTab[]);
 
  printf("La moyanne des valeurs du tableau = %f", fResMoy);
}
 
float moy_tab(float iTab[])
{
 /* declaration des variables */
 int iI;
 float fMoyenne;
 
 fMoyenne = iTab[0];
 for (iI=1; iI<MAX_ELEM; iI++)
    {
     fMoyenne = iTab[iI] + fMoyenne;
    }
 
 return fMoyenne / MAX_ELEM;
}

Reply

Marsh Posté le 10-07-2007 à 16:35:56    

Le bon reflexe à avoir est de debugger toi même le programme;
- tu mets un point d'arrêt avant que ca ne plante.
- tu déroules le programme jusqu'à ce que ça foire
- tu observes les valeurs des variables en jeu à ce moment du déroulement
- tu déduis naturellement la cause du bug.


---------------
Töp of the plöp
Reply

Marsh Posté le 10-07-2007 à 16:46:11    

oui c'est ce que j'ai fais de puis tout à l'heure mais je n'arrive toujours pas resoudre le problemme.

Reply

Marsh Posté le 10-07-2007 à 17:01:27    

ca plante à quelle ligne ?
quel est le message d'erreur ?


Message édité par _darkalt3_ le 10-07-2007 à 17:01:44

---------------
Töp of the plöp
Reply

Marsh Posté le 10-07-2007 à 17:15:00    

L'erreur est ici : fResMoy = moy_tab(iTab[]);  
Ecris fResMoy = moy_tab(iTab);  
 

Reply

Marsh Posté le 10-07-2007 à 17:17:48    

Tu devrais mettre ton code entre balises cpp pour que ce soit plus lisible. Si tu déclares ton tableau en dehors des fonctions tu n'as pas besoin de le passer en paramètre, toutes les fonctions y ont accès.

Reply

Marsh Posté le 10-07-2007 à 17:19:15    

oui, exactement.
et message d'erreur est "error expression syntax"

Reply

Marsh Posté le 10-07-2007 à 17:21:00    

Pour ce qui est de la correction du code, il y a effectivement beaucoup à dire (protoype de main, usage de variables globales).

Reply

Marsh Posté le 10-07-2007 à 17:45:26    

Merci beaucoup Trap D

Reply

Marsh Posté le 10-07-2007 à 17:45:26   

Reply

Marsh Posté le 10-07-2007 à 17:46:13    

Mais, pourquoi il ne faut pas mettre entre crochet?

Reply

Marsh Posté le 10-07-2007 à 18:18:43    

Parceque, à l'exécution du code, la fonction attend l'adresse d'un tableau de float et les "[]" sont utilisés pour les déclarations de type de paramètres dans les déclarations de fonctions.

Reply

Marsh Posté le 10-07-2007 à 21:03:34    

Ah d'accord, encore merci Trap D.

Reply

Marsh Posté le 10-07-2007 à 22:03:14    

asie a écrit :

Ah d'accord, encore merci Trap D.


un site qui te sera bien utile:
http://mapage.noos.fr/emdel/


---------------
Töp of the plöp
Reply

Marsh Posté le 14-07-2007 à 00:35:00    

asie a écrit :

voici mon code:

Code :
  1. /* Appelle de la fonction */
  2.   fResMoy = moy_tab(iTab[]);



C'est quoi ces [] ? Tu sors ça d'où ?  
 
Ceci compile et se comporte d'une manière plus souple...

Code :
  1. #include <stdio.h>
  2. /* Enoncé: Écrire une fonction qui calcule la moyenne des valeurs contenues dans un *
  3. * tableau de 5 entiers.                                                           */
  4. double moy_tab (double iTab[], int nb)
  5. {
  6.    /* declaration des variables */
  7.    int iI;
  8.    double fMoyenne;
  9.    fMoyenne = iTab[0];
  10.    for (iI = 1; iI < nb; iI++)
  11.    {
  12.       fMoyenne = iTab[iI] + fMoyenne;
  13.    }
  14.    return fMoyenne / nb;
  15. }
  16. int main (void)
  17. {
  18.    double iTab[5] = { 2, 5, 4, 3, 1 };
  19.    double fResMoy = moy_tab (iTab, 5);
  20.    printf ("La moyanne des valeurs du tableau = %f", fResMoy);
  21.    return 0;
  22. }


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Sujets relatifs:

Leave a Replay

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