Utiliser une valeur d'un tableau dans une fonction

Résolu/Fermé
Lk7 - 26 déc. 2015 à 15:39
 Lk7 - 26 déc. 2015 à 17:01
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;
}
A voir également:

1 réponse

jisisv Messages postés 3645 Date d'inscription dimanche 18 mars 2001 Statut Modérateur Dernière intervention 15 janvier 2017 934
Modifié par jisisv le 26/12/2015 à 16:34
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 <code *> , </code> 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
Yep ! Merci bien !
0