[C] Fonction prenant en paramétre un tableau
Résolu
pascal$$
Messages postés
39
Statut
Membre
-
pascal$$ Messages postés 39 Statut Membre -
pascal$$ Messages postés 39 Statut Membre -
Bonjour,débutant en C, je voudrais creer une fonction mafonction prenant en paramétre un tableau de floats et qui en réalise l affichage, partant du principe que sizeof(t)/4 représente la taille de t, je propose donc:
#include <stdio.h>
#include <stdlib.h>
void mafonction(float t[]){
int i;
printf("%d\n", ((sizeof (t))/4)); /*pour faire un test*/
for (i=0; i<=(sizeof(t)/4); i++){
printf("%f\n", t[i]);
}
}
int main(){
float ta[]={1.0, 3.0, 6.0, 3.0, 2.0, 9.0};
mafonction(ta);
return EXIT_SUCCESS;
}
a l execution j obtiens:
1
1.000000
3.000000
ou est mon erreur?
pourquoi la fonction sizeof se comporte t elle de cette façon?
#include <stdio.h>
#include <stdlib.h>
void mafonction(float t[]){
int i;
printf("%d\n", ((sizeof (t))/4)); /*pour faire un test*/
for (i=0; i<=(sizeof(t)/4); i++){
printf("%f\n", t[i]);
}
}
int main(){
float ta[]={1.0, 3.0, 6.0, 3.0, 2.0, 9.0};
mafonction(ta);
return EXIT_SUCCESS;
}
a l execution j obtiens:
1
1.000000
3.000000
ou est mon erreur?
pourquoi la fonction sizeof se comporte t elle de cette façon?
3 réponses
-
il ya plus simple
tu declare ton tableau comme pointeur tu demande a l'utilisateur sa taille puis tu alloue la bonne memoire en fonction de la taille ensuite tu demande a l'utilisateur de le remplir puis dans ta fonction il faut juste rajouter la taille comme parametre
voici ce que ça donne :
#include <stdio.h> #include <stdlib.h> void mafonction(float *t, int taille){ int i; printf("\nles valeur du tableau sont : \n"); for (i=0; i<taille; i++) printf("%f\n", t[i]); } int main(){ float *ta ; int taille,i; printf("entre la taille du tableau : \n"); scanf("%d",&taille); ta=(float *) malloc(taille*sizeof(float)); printf("entre les valeurs du tableau : \n"); for(i=0;i<taille;i++){ scanf("%f",&ta[i]);} mafonction(ta,taille); return EXIT_SUCCESS; } -
Salut,
sizeof est un opérateur qui renvoie la taille dans objet (int, char, float, etc..) mais pas la taille de ton tableau
la taille de float étant 4 sur ton système le 1 est affiché vu que tu divises par 4
comme il s'agit d'un tableau initialisé avec un certain nombre d'éléments alors tu n'as qu'à écrire#include <stdio.h> #include <stdlib.h> void mafonction(float t[]){ int i; for (i=0; i< 6; i++){ printf("%f\n", t[i]); } } int main(){ float ta[]={1.0, 3.0, 6.0, 3.0, 2.0, 9.0}; mafonction(ta); return EXIT_SUCCESS; } -