> Tous les forums > Forum Autres langages
 passage de tableaux en variable dans les fonctions
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
fambonne
  Posté le 30/10/2010 @ 13:53 
Aller en bas de la page 
Petit astucien

Bonjour à tous,

J'aimerais que vous m'aidiez à comprendre comment passé un tableaux d'entier en variable pour une fonction.
J'ai écrit un petit programme en C qui ne fonctionne pas, notament à cause de ce passage.
Si vous pouviez me débloquer et m'éclairer je vous en serais très reconnaissant.

Voici le code:/*
fonction sommetab qui renvoie la somme des valeurs contenues dans le tableau
*/

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

//prototype de la fonction
int Sommetab(int *tab ,int taille);
int main(void)
{
int somme,tab;
somme=Sommetab(tab,5);
printf("la somme est %d\n",somme);
return (0);
}

//description de la fonction
int Sommetab(int *tab,int taille){
int i,somme;
srand(time(NULL));
somme=0;
printf("tableau:\n");
for (i=0;i<taille;i++){
tab[i]=rand()%10;
printf("%d\n",tab[i]);
somme=somme+tab[i];
}
}

et le comilateur met:

sommetab.c: In function ‘main’:
sommetab.c:14: warning: passing argument 1 of ‘Sommetab’ makes pointer from integer without a cast
sommetab.c:10: note: expected ‘int *’ but argument is of type ‘int’

Voila bon comme ça ce n'est pas tres lisible mais bon...



Modifié par fambonne le 30/10/2010 14:03
Publicité
fambonne
 Posté le 31/10/2010 à 16:43 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Mais si on declare tab_main[10] et qu'on envoi tab_main,5 ça ne va pas faire une erreur de segmentation?

Et oui pour l'amelioration je me doute bien que c'est tout à fait possible...

Pour le moment je cherche juste à bien comprendre comment appeller des fonctions avec des tableaux etc.

Pour les commentaire avec // j'avait vu cette syntaxe quelque part et apparement elle est reconnue avec gedit donc je me suis pas posé plus de question.

Quand au somme+= je ne le connaissait pas, merci.

Donc en fait si j'ai bien saisit il faut déclarer le tableau dans le main, par exemple

int tab_main[10];

et quand on appelle la fonction, on envoi ce meme tableau avec une taille differente, par exemple

sommetab(tab_main,5);

et dans la fonction on utilise un autre nom (tab par exemple).

le truc que je ne sais jamais c'est quand on appelle la fonction, on envoit tab_main, &tab_main etc...?

fambonne
 Posté le 31/10/2010 à 17:39 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Merci je comprends mieux mes erreurs maintenant.

Encore une petite chose:

En fait tu déclares un tableau ayant une taille de 10 et tu n'en utilises

que les 5 premiers.

Pas de probleme de remplissage aléatoire ?

Et oui je doit utilisé un compilateur C++, je travaille sous linux avec gedit et gcc.

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
199,99 €Pack de 2 disques durs Seagate NAS Iron Wolf 4 To à 199,99 €
Valable jusqu'au 25 Avril

Cdiscount propose le pack de 2 disques durs Seagate IronWolf 4 To à 199,99 €. Ces disques durs 3.5 pouces SATA III sont adaptés aux NAS et ordinateurs qui fonctionnent 24h/24. On les trouve ailleurs autour de 120 € l'unité. Disques CMR.


> Voir l'offre
106,99 €Disque dur Seagate NAS Iron Wolf 4 To à 106,99 €
Valable jusqu'au 25 Avril

Amazon propose le disque dur Seagate IronWolf 4 To à 106,99 €. Ce disque dur 3.5 pouces SATA III est adapté aux NAS et ordinateurs qui fonctionnent 24h/24. On le trouve ailleurs autour de 120 €. 


> Voir l'offre
Gratuit3 mois d'abonnement à Amazon Music Unlimited gratuits
Valable jusqu'au 26 Mai

Amazon vous permet d'essayer son service de streaming musical pendant 3 mois gratuitement. Avec Amazon Music Unlimited, accédez à plus de 50 millions de titres, sans publicité et en illimité sur tous vos appareils : smartphone, tablette, PC/Mac, Fire, Alexa. Vous avez même la possibilité de télécharger vos playlists pour des écoutes hors connexion. A la fin de ces 3 mois, vous pourrez basculer vers l'offre payante à 9,99 € / mois ou bien arrêter sans frais le service. A noter l'existence d'une offre famille à 14,99 € / mois qui permet jusqu'à 6 utilisateurs d'écouter leur musique à tout moment et sur leurs appareils préférés. Vous pouvez annuler l'abonnement à tout moment.


> Voir l'offre

Sujets relatifs
C mettre dans une variable resultat DOS
mysql base de données de récupération dans wampserver2
Cellules vides dans un Datagridview (VB.NET)
dossiers unknown folder dans C
Comment mettre un temps dans un Script
Ameliorer le Main "Java" avec les fonctions & procédures
Comment exclure 0 dans une fonction
forcer l'acceptation de localisation dans les paramètres de flash
Existe-t-il une affiliation dans les programmes informatiques ?
Enregistrer telle quelle la valeur d'un JPasswordField dans la BD
Plus de sujets relatifs à passage de tableaux en variable dans les fonctions
 > Tous les forums > Forum Autres langages