[C] tableau

tableau [C] - C - Programmation

Marsh Posté le 08-06-2006 à 15:30:41    

Bonjour,
 
Un gros problème de C. En fait je passe des programmes Matlab en C, et j'ai de gros problèmes avec les tableaux, notamment quand je passe des valeurs dans un tableau et que je ne sais pas par avance quelle taille fera le tableau, comment faire ?
 
Je veux faire une boucle for qui s'arrête à la fin du tableau dont je ne connais pas la fin ... impasse ?! quelle est la solution ??
 
 :cry:


---------------
amelie
Reply

Marsh Posté le 08-06-2006 à 15:30:41   

Reply

Marsh Posté le 08-06-2006 à 15:33:39    

En C, la taille d'un tableau est connu à la compilation.
 
Donc quelque part, tu dois pouvoir obtenir la taille de ce tableau et faire une boucle FOR qui va parcourir le tableau par son index.


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

Marsh Posté le 08-06-2006 à 15:38:10    

amele a écrit :

Un gros problème de C. En fait je passe des programmes Matlab en C, et j'ai de gros problèmes avec les tableaux, notamment quand je passe des valeurs dans un tableau et que je ne sais pas par avance quelle taille fera le tableau, comment faire ?


  • Soit tu ajoutes un paramètre avec la taille du tableau
  • Soit tu mets un 'marqueur' dans les données pour déterminer la fin du tableau.


---------------
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

Marsh Posté le 08-06-2006 à 16:05:07    

ha oui, bonne idée le marqueur.


---------------
amelie
Reply

Marsh Posté le 08-06-2006 à 16:20:16    

amele a écrit :

ha oui, bonne idée le marqueur.


Attention, il y a des contraites :  

  • La valeur ne doit pas être utilisée
  • Il faut une place supplémentaire

Mais si tu connais les chaines en C, tu connais ces contraintes...


---------------
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

Marsh Posté le 08-06-2006 à 16:38:48    

j'ai une autre question :
 
Comme on ne peut pas renvoyer de tableau par une fonction, alors j'ai créé la fonction :
 

Code :
  1. void codage(float *entree, float *sortie, int N);


 
Avant la fonction j'ai fait les initialisations suivantes :
 

Code :
  1. int N=4;
  2. float entree[N]={1,2,3,4};
  3. float *sortie;


 
puis j'appelle ma fonction :

Code :
  1. codage(entree,sortie,N);


 
Seulement voilà dans sortie il n'y que des zéros !
 
Donc j'ai vérifié en mettant un printf à la fin de ma fonction :
 

Code :
  1. void codage(float *entree, float *sortie, int N){
  2. \....\
  3. for(i=0;i<M;i++)
  4. printf("%f", sortie[i]);}


 
et là il n'y a pas de problème ?!
 
 
 
 


---------------
amelie
Reply

Marsh Posté le 08-06-2006 à 16:45:12    

Sortie est un pointeur, et tu ne l'as pas initialisé...
 
Cherche donc un cours sur le C.


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

Marsh Posté le 08-06-2006 à 17:20:14    

tu peux faire comme ca par exemple

Code :
  1. void codage(const float *entree, const size_t taille_entree, float *sortie, const size_t taille_sortie)
  2. {
  3. }
  4. ...
  5. const float entree[]={1,2,3,4};
  6. float *sortie = malloc(taille_sortie * sizeof*sortie); /* si taille_sortie inconnue a la compilation */
  7. if( ! sortie ) { /* erreur */}
  8. ...
  9. codage(entree, sizeof entree / sizeof *entree, sortie, taille_sortie);


 
mais si tu viens de matlab je te conseil d'uiliser la bibliotheque gsl (gnu scientific library), ca sera nettement plus simple

Reply

Sujets relatifs:

Leave a Replay

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