Utiliser une valeur d'un tableau dans une fonction

Résolu
Lk7 -  
 Lk7 -
Bonjour, j'ai écrit un petit programme, qui fait quelque chose de très simple, additionner 2 tableaux entre eux, mais voilà, je veux faire cette somme dans une fonction et c'est la que je suis coincé.

Si quelqu'un peut m'aider svp.

#include <stdio.h>
#include <stdlib.h>
#define N 5
float sommep(float tab1[], float tab2[]);

int main()
{
int i, j,w;
float tab1[5], tab2[5], val;

printf("Veuillez ajouter 5 valeurs pour le 1er tableau : \n");

// Remplissage du 1er tableau !

for(j=0; j<5; j++)
{
scanf("%f\n", &tab1[j]);
}
// Remplissage du 2ème tableau !
printf("Veuillez ajouter 5 valeurs pour le 1er tableau : \n");
for(w=0; w<5; w++)
{
scanf("%f\n", &tab2[w]);
}

// On appel la fonction dans une boucle pour la repeter
for (i = 0 ; i < 5 ; i++)
{
val = sommep(tab1[i], tab2[i]);
printf("le résultat de la ligne %d est\n",i);
}
return EXIT_SUCCESS;
}

float sommep(float tab1[],float tab2[])
{
float val;
val = tab1[] + tab2[];
return val;
}

1 réponse

  1. jisisv Messages postés 3678 Statut Modérateur 936
     
    Tu mélanges tout.
    La signature de ta fonction sommp est:
    float sommep(float tab1[],float tab2[])

    or tu y fais appel avec deux arguments float
    Soit cohérent et modifie ta fonction sommep en
    float sommep(float x, float y)
    {
    float val;
    //aucun intérêt à utiliser une variable locale supplémentaire
    return x+y ;
    }


    OU conserve ton en-tête et passe les variables tab1 et tab2 en paramètre (ce seront dès lors des pointeurs). et effectue une boucle sur la longueur des tableaux (avec valeurs sentinelle ou longueur passée en argument.

    D'autre part val = tab1[] + tab2[]; n'a pas de sens en C.
    Tu peux tout au plus ajouter un entier à un pointeur, de sorte que tab1+3 pointe sur le 4-ième élément du tableau tab1

    Donc quelque chose du genre:
     return val;#include <stdio.h>
    #include <stdlib.h>
    #define N 5
    void  sommep(float tab1[], float tab2[]);
    
    int main()
    {
      int i, j,w;
      float tab1[5], tab2[5], val;
    
      printf("Veuillez ajouter 5 valeurs pour le 1er tableau : \n");
    
      // Remplissage du 1er tableau !
    
      for(j=0; j<5; j++)
        {
          scanf("%f\n", &tab1[j]);
        }
      // Remplissage du 2ème tableau !
      printf("Veuillez ajouter 5 valeurs pour le 1er tableau : \n");
      for(w=0; w<5; w++)
        {
          scanf("%f\n", &tab2[w]);
        }
      sommep(tab1, tab2);
      // On appel la fonction dans une boucle pour la repeter
      return EXIT_SUCCESS;
    }
    
    
    void sommep(float t1[],float t2[])
    {
      int i;
      for(i=0; i < N; i++)
        {
          printf("%f\n", t1[i] + t2[i]);
        }
    }
    sera fonctionnel, si pas stylistiquement exceptionnel.
    • n'utilise pas des noms de paramètres de fonction identiques à des variables globales ou locales à main. Utilise des noms de paramètres parlants.

    johand@bata:~/src/CCM/C$ touch tableaux.c
    johand@bata:~/src/CCM/C$ make tableaux
    cc tableaux.c -o tableaux
    johand@bata:~/src/CCM/C$ echo 1 2 3 4 5 5 4 3 2 1 |./tableaux
    Veuillez ajouter 5 valeurs pour le 1er tableau :
    Veuillez ajouter 5 valeurs pour le 1er tableau :
    6.000000
    6.000000
    6.000000
    6.000000
    6.000000

    La prochaine fois, utilise les balises &ltcode *&gt , &lt/code&gt afin d'essayer d'obtenir si pas une bonne indentation, au moins une numérotation des lignes de code.
    Gates gave ^W  sold  you the windows.
    GNU gave us the whole house.(Alexandrin)
    0
    1. Lk7
       
      Yep ! Merci bien !
      0