Connaître le nombre d'éléments d'un tableau - C - Programmation
Marsh Posté le 21-01-2004 à 11:17:37
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.
Marsh Posté le 21-01-2004 à 11:24:58
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.
Marsh Posté le 21-01-2004 à 21:30:38
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 !...)
Marsh Posté le 21-01-2004 à 22:40:09
deff a écrit : C'est peut être tout bête mais je vois pas. |
Non, il y en a 10.
Vas relire ton cours.
A+,
Marsh Posté le 22-01-2004 à 00:45:37
ReplyMarsh Posté le 22-01-2004 à 01:59:03
Toutaffé. Et d'ailleurs :
Code :
|
Marsh Posté le 22-01-2004 à 08:57:48
on a deja dit que ct moche ca
y a eu un topic fleuve sur ce sujet lancé par taz y a pas longtemps
Code :
|
Marsh Posté le 22-01-2004 à 11:44:00
Joel F a écrit : on a deja dit que ct moche ca
|
je comprends meme pas ce que ca veut dire
Marsh Posté le 22-01-2004 à 11:52:10
Joel F a écrit : on a deja dit que ct moche ca
|
Et tu compiles ca comment en C ?
DEHORS
Marsh Posté le 22-01-2004 à 12:35:30
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
Marsh Posté le 22-01-2004 à 13:09:18
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...
Marsh Posté le 22-01-2004 à 14:03:57
chrisbk a écrit : |
Toi dehors
C'est pour dire qu'en C c'est pas possible aors que dans un vrai langage ca l'est
Marsh Posté le 22-01-2004 à 14:29:07
Joel F 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.
Marsh Posté le 22-01-2004 à 14:31:06
chaica a écrit : |
bon, pinaillons pas et allons droit au but. Le C, c'est a chier.
Marsh Posté le 22-01-2004 à 16:23:52
chrisbk a écrit : |
tu doit pourtant bien t'amuser avec les jeux d'idsofware qui sont en c
Marsh Posté le 22-01-2004 à 16:25:56
skelter a écrit : |
(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
Marsh Posté le 22-01-2004 à 16:28:30
gilou a écrit : Non, il y en a 10. |
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"
Marsh Posté le 22-01-2004 à 16:34:52
qui est laide, anti pratique et franchement moche (mais je l'ai deja dit).
Fait une structure bourdel
Marsh Posté le 22-01-2004 à 16:39:01
+1
le truc du premier element c'est quand meme assez drole
Marsh Posté le 22-01-2004 à 16:40:43
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]++;
Marsh Posté le 22-01-2004 à 17:09:35
deff a écrit : |
hum, tu as encore faux..
les autres sont aussi initialisés, à 0
Marsh Posté le 22-01-2004 à 17:10:45
ReplyMarsh Posté le 22-01-2004 à 18:21:57
oui
Code :
|
sous visual en tout cas
Marsh Posté le 22-01-2004 à 18:47:09
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?
Marsh Posté le 22-01-2004 à 18:54:11
skelter a écrit : c'est pas seulement vc++, normalement quand tu initialise un tableau avec 3 elements tous les autres sont initialiser a 0 |
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
Marsh Posté le 22-01-2004 à 19:04:17
deff a écrit : |
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+,
Marsh Posté le 22-01-2004 à 19:05:27
joel f a écrit : qui est laide, anti pratique et franchement moche (mais je l'ai deja dit). |
+1
A+,
Marsh Posté le 22-01-2004 à 19:07:41
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.
Marsh Posté le 22-01-2004 à 19:09:16
captainneuneu a écrit : |
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+,
Marsh Posté le 21-01-2004 à 11:08:27
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.<<--