Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1189 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Connaître le nombre d'éléments d'un tableau

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Connaître le nombre d'éléments d'un tableau

n°617546
deff
Monde de merde
Posté le 21-01-2004 à 11:08:27  profilanswer
 

C'est peut être tout bête mais je vois pas.
 
ex:
 
int tab[10]={11,22,33};
 
j'aimerai obtenir 3 (car il y a 3 élements).
 
Comment faire ??
 
merci


---------------
-->>C'est l'histoire d'un gars qui rêve qu'il mange de la guimauve.Il se réveille et il a plus d'oreiller.<<--
mood
Publicité
Posté le 21-01-2004 à 11:08:27  profilanswer
 

n°617549
Joel F
Real men use unique_ptr
Posté le 21-01-2004 à 11:17:37  profilanswer
 

question deja repondu.
En c spapossible comme ca.
 
le mieux ets que tu encapsule ton tableau dans un struct ou tu tiens a jour le nb d'element et que tu interroge ad libidum.

n°617552
Carbon_14
Posté le 21-01-2004 à 11:24:58  profilanswer
 

Si prévu à l'origine, on peut aussi mettre le nombre d'éléments en dim zéro, suffit de prévoir une "case" de plus. Pour lire les données, on part de l'indice 1.

n°618328
blackgodde​ss
vive le troll !
Posté le 21-01-2004 à 19:42:56  profilanswer
 

et si c'est un tableau de char et qu'on a 300 éléments ?

n°618416
Carbon_14
Posté le 21-01-2004 à 21:30:38  profilanswer
 

Ca marche pour les tableaux d'int.... Il parlait d'int(s).
 
(En VB3, il me semble qu'on trouvait la taille de la chaîne en lisant les deux octets aux adresses Chaine-1, et Chaine-2 d'après mes essais, à confirmer. Que de choses cachées dans VB !...)

n°618445
gilou
Modérateur
Modzilla
Posté le 21-01-2004 à 22:40:09  profilanswer
 

deff a écrit :

C'est peut être tout bête mais je vois pas.
 
ex:
 
int tab[10]={11,22,33};
 
j'aimerai obtenir 3 (car il y a 3 élements).
 
Comment faire ??
 
merci

Non, il y en a 10.
Vas relire ton cours.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°618546
jagstang
Pa Capona ಠ_ಠ
Posté le 21-01-2004 à 23:48:45  profilanswer
 

mdr

n°618581
captainneu​neu
Posté le 22-01-2004 à 00:45:37  profilanswer
 

gilou a écrit :

Non, il y en a 10.
Vas relire ton cours.
A+,


 
un peu violent, mais c vrai :d

n°618614
matafan
Posté le 22-01-2004 à 01:59:03  profilanswer
 

Toutaffé. Et d'ailleurs :

Code :
  1. #include <stdio.h>
  2. int
  3. main()
  4. {
  5.         int tab[10]={11,22,33};
  6.         printf("Nb éléments: %u\n", sizeof(tab)/sizeof(*tab));
  7. }

n°618654
Joel F
Real men use unique_ptr
Posté le 22-01-2004 à 08:57:48  profilanswer
 

on a deja dit que ct moche ca :D
y a eu un topic fleuve sur ce sujet lancé par taz y  a pas longtemps :p
 

Code :
  1. template<typename T, size_t N>
  2.  inline size_t size(const T (& )[N])
  3.  {
  4.      return N;
  5.  }


Message édité par Joel F le 22-01-2004 à 08:59:16
mood
Publicité
Posté le 22-01-2004 à 08:57:48  profilanswer
 

n°618749
captainneu​neu
Posté le 22-01-2004 à 11:44:00  profilanswer
 

Joel F a écrit :

on a deja dit que ct moche ca :D
y a eu un topic fleuve sur ce sujet lancé par taz y  a pas longtemps :p
 

Code :
  1. template<typename T, size_t N>
  2.  inline size_t size(const T (& )[N])
  3.  {
  4.      return N;
  5.  }




 
je comprends meme pas ce que ca veut dire  :??:

n°618759
chrisbk
-
Posté le 22-01-2004 à 11:52:10  profilanswer
 

Joel F a écrit :

on a deja dit que ct moche ca :D
y a eu un topic fleuve sur ce sujet lancé par taz y  a pas longtemps :p
 

Code :
  1. template<typename T, size_t N>
  2.   inline size_t size(const T (& )[N])
  3.   {
  4.       return N;
  5.   }




 
Et tu compiles ca comment en C ? [:icon11]
DEHORS :O

n°618802
djobidjoba
Posté le 22-01-2004 à 12:35:30  profilanswer
 

directement avec une fonction tu peux pas je pense.
il faut initialiser ton tablo avec un valeur quelconque (-1 par ex), puis le parcourir jusqu'a que tu trouve cette valeur.
a moins qu'a la creation d'un tableau une valeur par defaut soit deja attribuée ..
while (tab[n]!=-1) n++;
--> n-1 = 3


Message édité par djobidjoba le 22-01-2004 à 12:38:24
n°618836
smilm
Posté le 22-01-2004 à 13:09:18  profilanswer
 

Une idée conne mais ca marche: (enfin, surment)
Dans ton tableau, l'élément tab[0] = nbelement et a chaque fois que tu rajoute un élément dans ton tableau, tu fais tab[0]++;
 
Bon, c de la bidouille et c chiant de faire "tab[0]++;" pour un gros prog...


Message édité par smilm le 22-01-2004 à 13:09:38
n°618868
Joel F
Real men use unique_ptr
Posté le 22-01-2004 à 14:03:57  profilanswer
 

chrisbk a écrit :


 
Et tu compiles ca comment en C ? [:icon11]
DEHORS :O


 
Toi dehors :o
C'est pour dire qu'en C c'est pas possible aors que dans un vrai langage ca l'est   :kaola:


Message édité par Joel F le 22-01-2004 à 14:04:15
n°618903
chaica
Posté le 22-01-2004 à 14:29:07  profilanswer
 

Joel F a écrit :


 
Toi dehors :o
C'est pour dire qu'en C c'est pas possible aors que dans un vrai langage ca l'est   :kaola:  


 
Ouais le C est pas un vrai langage, c'est connu. D'ailleurs unix c est pas un vrai os puisque c'est pas fait avec un vrai langage.

n°618908
chrisbk
-
Posté le 22-01-2004 à 14:31:06  profilanswer
 

chaica a écrit :


 
Ouais le C est pas un vrai langage, c'est connu. D'ailleurs unix c est pas un vrai os puisque c'est pas fait avec un vrai langage.


 
bon, pinaillons pas et allons droit au but. Le C, c'est a chier.

n°618909
Joel F
Real men use unique_ptr
Posté le 22-01-2004 à 14:31:23  profilanswer
 

euh .... y a un :o c'est pas pour rien :kaola:

n°619141
skelter
Posté le 22-01-2004 à 16:23:52  profilanswer
 

chrisbk a écrit :


 
bon, pinaillons pas et allons droit au but. Le C, c'est a chier.
 


 
tu doit pourtant bien t'amuser avec les jeux d'idsofware qui sont en c :D

n°619145
chrisbk
-
Posté le 22-01-2004 à 16:25:56  profilanswer
 

skelter a écrit :


 
tu doit pourtant bien t'amuser avec les jeux d'idsofware qui sont en c :D  


 
(IMHO gnagnag)
tu peux tout faire en C, n'empeche que ce langage est naze et date d'avant guerre. Comment peut on aimer ce langage restera pour moi un mystere
 

n°619150
deff
Monde de merde
Posté le 22-01-2004 à 16:28:30  profilanswer
 

gilou a écrit :

Non, il y en a 10.
Vas relire ton cours.
A+,


 
oh le lourd...
 
je pense que la plupart des gens avait compris "éléments initialisés".
 
Pour les autres, merci je vais suivre la solution du "var[0]=nb_element"
 


---------------
-->>C'est l'histoire d'un gars qui rêve qu'il mange de la guimauve.Il se réveille et il a plus d'oreiller.<<--
n°619159
Joel F
Real men use unique_ptr
Posté le 22-01-2004 à 16:34:52  profilanswer
 

qui est laide, anti pratique et franchement moche (mais je l'ai deja dit).
 
Fait une structure bourdel :fou:

n°619167
skelter
Posté le 22-01-2004 à 16:39:01  profilanswer
 

+1
 
le truc du premier element c'est quand meme assez drole ;)

n°619172
Joel F
Real men use unique_ptr
Posté le 22-01-2004 à 16:40:43  profilanswer
 

et chiant, et deconcertant pour un relecteur et tu il vas revenir pleurer bicose son programme plante lorsque 'un  
jour il va oublier de faire tab5[0]++; [:kiki]

n°619178
skelter
Posté le 22-01-2004 à 16:44:47  profilanswer
 

ba oui completement! c'est tout simplement ingerable

n°619219
captainneu​neu
Posté le 22-01-2004 à 17:09:35  profilanswer
 

deff a écrit :


 
oh le lourd...
 
je pense que la plupart des gens avait compris "éléments initialisés".
 
Pour les autres, merci je vais suivre la solution du "var[0]=nb_element"
 
 


 
hum, tu as encore faux..
les autres sont aussi initialisés, à 0

n°619222
chrisbk
-
Posté le 22-01-2004 à 17:10:45  profilanswer
 

captainneuneu a écrit :


 
hum, tu as encore faux..
les autres sont aussi initialisés, à 0


non

n°619228
skelter
Posté le 22-01-2004 à 17:19:24  profilanswer
 

lol

n°619279
captainneu​neu
Posté le 22-01-2004 à 18:21:57  profilanswer
 


 
oui

Code :
  1. #include <stdio.h>
  2. void main()
  3. {
  4.     int test[10]={1,2,3};
  5.     int i;
  6.     for(i=0;i<10;i++)
  7.     {
  8.         fprintf(stdout,"%d\n",test[i]);
  9.     }
  10. }


 
sous visual en tout cas


Message édité par captainneuneu le 22-01-2004 à 18:24:30
n°619303
skelter
Posté le 22-01-2004 à 18:47:09  profilanswer
 

c'est pas seulement vc++, normalement quand tu initialise un tableau avec 3 elements tous les autres sont initialiser a 0
quand on declare une chaine, on fait jamais
char s[20]="machin\0"; non?


Message édité par skelter le 22-01-2004 à 18:48:19
n°619310
captainneu​neu
Posté le 22-01-2004 à 18:54:11  profilanswer
 

skelter a écrit :

c'est pas seulement vc++, normalement quand tu initialise un tableau avec 3 elements tous les autres sont initialiser a 0
quand on declare une chaine, on fait jamais
char s[20]="machin\0"; non?


 
ben pour une chaine, je sias pas, mais pour le tableau, je suis plutot sur de mon coup.. j'espere que taz va pâs debarquer dans 2 min pour me prouver le contraire  :whistle:

n°619318
gilou
Modérateur
Modzilla
Posté le 22-01-2004 à 19:04:17  profilanswer
 

deff a écrit :


 
oh le lourd...
 
je pense que la plupart des gens avait compris "éléments initialisés".
Pour les autres, merci je vais suivre la solution du "var[0]=nb_element"
 
 

Justement, le fait d'utiliser une ecriture
int tab[10]={11,22,33};  va initialiser tous les elements de ton tableau (et initialisera a 0 les 7 que tu n'as pas ecrit).
C'est la difference avec  
int tab[10]; qui n'initialise rien.
Un tableau, son initialisation a la declaration c'est du tout ou rien.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°619319
gilou
Modérateur
Modzilla
Posté le 22-01-2004 à 19:05:27  profilanswer
 

joel f a écrit :

qui est laide, anti pratique et franchement moche (mais je l'ai deja dit).
 
Fait une structure bourdel :fou:

+1
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°619323
Taz
bisounours-codeur
Posté le 22-01-2004 à 19:07:41  profilanswer
 

bah réfléchi un peu ... les char sont des ... entiers. donc ou, àa mets à 0 le reste.
de toutes façons
 
"taz" <-> {'t', 'a', 'z', '\0'} oh des entiers, et après on rempli le reste avec des 0 comme prévu.

n°619326
gilou
Modérateur
Modzilla
Posté le 22-01-2004 à 19:09:16  profilanswer
 

captainneuneu a écrit :


 
ben pour une chaine, je sias pas, mais pour le tableau, je suis plutot sur de mon coup.. j'espere que taz va pâs debarquer dans 2 min pour me prouver le contraire  :whistle:  

Pas d'inquietude, c'est dans la spec du C.
Pour ca que l'on trouve souvent le dialecte
un_type un_tableau[UN_NOMBRE] = {0};  
pour initialiser completement le tableau a sa declaration.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Connaître le nombre d'éléments d'un tableau

 

Sujets relatifs
[HTML] Hauteur d'une ligne dans un tableauNombre de fichiers dans un dossier
(Débutant) taille tableau caractèrePHP-arondir un nombre
ajouter tableauTableau de données
actualiser le tri dans un tableau sous excellimiter le nombre de decimales ?
Faire un tableau dans un JTEXTAREA ??[scheme] somme des elements d'une liste, qu'est ce qui va pas??
Plus de sujets relatifs à : Connaître le nombre d'éléments d'un tableau


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR