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

 


 Mot :   Pseudo :  
 
 Page :   1  2  3  4
Auteur Sujet :

défi de la semaine : fonction retournant la taille d'un tableau

n°573619
nraynaud
lol
Posté le 23-11-2003 à 01:52:01  profilanswer
 

Reprise du message précédent :

bossamiral2 a écrit :

Quand on stock un tableau de grande capacitée. Le stockage doit être forcément contigue ou non.

non, vu que avec l'unité MMU, des adresses contigues peuvent en fait appartenir à des pages mémoires qui ne sont pas contigues (en fait qui peuvent aussi ne pas exister (genre elles sont dans le swap ou alors elle n'ont jamais été accédées et donc l'OS ne s'est pas encore occupé de les allouer).
 
par contre, les cases possèdent des adresses contigues (enfin espacées de la largeur d'un élément quoi).


---------------
trainoo.com, c'est fini
mood
Publicité
Posté le 23-11-2003 à 01:52:01  profilanswer
 

n°573625
bossamiral​2
Ctrl+Alt+Del
Posté le 23-11-2003 à 01:56:28  profilanswer
 

nraynaud a écrit :

non, vu que avec l'unité MMU, des adresses contigues peuvent en fait appartenir à des pages mémoires qui ne sont pas contigues (en fait qui peuvent aussi ne pas exister (genre elles sont dans le swap ou alors elle n'ont jamais été accédées et donc l'OS ne s'est pas encore occupé de les allouer).
 
par contre, les cases possèdent des adresses contigues (enfin espacées de la largeur d'un élément quoi).


 
merci, je dois dire que j'ai vue cela il y a une dizaine d'année mais j'ai vraiment tout oublié

n°573629
Taz
bisounours-codeur
Posté le 23-11-2003 à 01:58:49  profilanswer
 

nraynaud a écrit :

non, vu que avec l'unité MMU, des adresses contigues peuvent en fait appartenir à des pages mémoires qui ne sont pas contigues (en fait qui peuvent aussi ne pas exister (genre elles sont dans le swap ou alors elle n'ont jamais été accédées et donc l'OS ne s'est pas encore occupé de les allouer).
 
par contre, les cases possèdent des adresses contigues (enfin espacées de la largeur d'un élément quoi).

bah commence pas à embrouiller avec les histoires d'adressage virtuel, etc, sinon y en a qui vont tomber de haut :D

n°573633
nraynaud
lol
Posté le 23-11-2003 à 02:04:05  profilanswer
 

Taz a écrit :

bah commence pas à embrouiller avec les histoires d'adressage virtuel, etc, sinon y en a qui vont tomber de haut :D

1) Serial Coder est bani
2) il y a une phrase qui répond à sa question.


---------------
trainoo.com, c'est fini
n°573635
chrisbk
-
Posté le 23-11-2003 à 02:05:34  profilanswer
 

nraynaud a écrit :


2) il y a une phrase qui répond à sa question.


 
ouais t'aurais pu le prevenir que pour lui c'etait comme si c'etait contigu, je sais pas si il va un jour s'amuser a jouer directement avec l'adressage physique :D

n°573640
bossamiral​2
Ctrl+Alt+Del
Posté le 23-11-2003 à 02:14:58  profilanswer
 

ben quand tu utilises un microcontroleur c'est bien ce que tu fais ( adressage physique)


Message édité par bossamiral2 le 23-11-2003 à 02:16:11
n°573647
nraynaud
lol
Posté le 23-11-2003 à 02:27:51  profilanswer
 

bossamiral2 a écrit :

ben quand tu utilises un microcontroleur c'est bien ce que tu fais ( adressage physique)

oui, mais tu ne galères pas avec l'adressage virtuel dans ce cas-là.
 
C'est quand tu conçois un système d'exploitation que c'est important de savoir ça. ça peut aussi être important à la marge de certaines applications (bases de données notement, et peut-être, si un jour le Hurd existe, pour les GC).


---------------
trainoo.com, c'est fini
n°573657
theshockwa​ve
I work at a firm named Koslow
Posté le 23-11-2003 à 05:50:43  profilanswer
 

Bon ... Ca ne fonctionne pas, qu'on soit bien clair ... :D Mais je pensais à quelque chose du genre :
 

Code :
  1. template<typename T, size_t N>
  2. int taille(T tab[N])
  3. {return N;}


 
J'espérais qu'il pourrait induire N à la compilation ... :/
 
Je me souviens avoir lu un pb de ce style en plus, ca m'agace d'autant plus de ne pas voir. :whistle:
 
quoi qu'il arrive, j'attends la soluce  :p

n°573658
nraynaud
lol
Posté le 23-11-2003 à 05:54:21  profilanswer
 

mon petit gars, à un caractère près tu étais bon ...


---------------
trainoo.com, c'est fini
n°573667
Joel F
Real men use unique_ptr
Posté le 23-11-2003 à 09:47:13  profilanswer
 

Il y & presque le bougre :D

mood
Publicité
Posté le 23-11-2003 à 09:47:13  profilanswer
 

n°573691
Taz
bisounours-codeur
Posté le 23-11-2003 à 10:30:12  profilanswer
 

pffff même pas rigolo, ça sert à quoi de balancer la solution alors que personne n'est fichu de définir ce qu'est un tableau. d'ailleurs ça ce sent quand même dans sa réponse


Message édité par Taz le 23-11-2003 à 10:33:16
n°573692
Taz
bisounours-codeur
Posté le 23-11-2003 à 10:30:43  profilanswer
 

putainf ait chier joce, ça fait 1 milliard d'années que je lui ai dit que typename est un mot clef et doit donc être coloré :o

n°573709
Taz
bisounours-codeur
Posté le 23-11-2003 à 11:03:59  profilanswer
 

un tableau t est :
- une collection de taille statique N d'éléments de même type T
- ces éléments sont contigus en mémoire. Les adresses des éléments sont ordonnées dans l'ordre croissant.
- sizeof t == sizeof(T) * N
- chaque élément de t est accessible directement (en temps constant) par l'opérateur []. les éléments sont indicés sur [0; N[
- un tableau n'est pas un pointeur. la conversion est assurée de telle manière que t -> &t[0]
- ce n'est pas une l-value
- chaque couple (T, N) construit un nouveau type de tableau.

n°573727
gilou
Modérateur
Modzilla
Posté le 23-11-2003 à 11:29:09  profilanswer
 

C'est quoi cette diatribe monologuesque?
C'est une methode standard en C pas meme plusplus, de faire sizeof(t)/sizeof(t[0])* pour obtenir le nombre d'elements d'un tableau.  
Qu'est-ce qui pose probleme?
 
* et (sizeof t)/(sizeof t[0]) en C++
A+,


Message édité par gilou le 23-11-2003 à 11:34:51

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°573731
Taz
bisounours-codeur
Posté le 23-11-2003 à 11:34:28  profilanswer
 

gilou a écrit :

C'est quoi cette diatribe monologuesque?
C'est une methode standard en C pas meme plusplus, de faire sizeof(t)/sizeof(t[0]) pour obtenir le nombre d'elements d'un tableau.
Qu'est-ce qui pose probleme?
A+,

dehors

n°573756
verdoux
And I'm still waiting
Posté le 23-11-2003 à 12:01:57  profilanswer
 

gilou a écrit :

C'est quoi cette diatribe monologuesque?


Taz est un intégriste du C++, il préfère largement du code-bloat templatesque à quelques macros bien senties.

n°573760
Taz
bisounours-codeur
Posté le 23-11-2003 à 12:03:59  profilanswer
 

verdoux a écrit :


Taz est un intégriste du C++, il préfère largement du code-bloat templatesque à quelques macros bien senties.

toi aussi dehors.
1) on parle de C++ pas de C
2) je fais des remarques systématiques sur sizeof rien n'y fait ...
3) tout le défi est de faire une fonction
4) code bloat mon cul, y en a pour 3 lignes, vous allez pleurer devant la solution

n°573787
Joel F
Real men use unique_ptr
Posté le 23-11-2003 à 12:40:17  profilanswer
 

verdoux a écrit :


Taz est un intégriste du C++, il préfère largement du code-bloat templatesque à quelques macros bien senties.


 
d'autan tplus que le template produit generalement un code plsu compact que du code à tonton ... mais c'est pas grave

n°573788
Taz
bisounours-codeur
Posté le 23-11-2003 à 12:41:12  profilanswer
 

Joel F a écrit :


 
d'autan tplus que le template produit generalement un code plsu compact que du code à tonton ... mais c'est pas grave

et bien meilleur. il est prouvé que les templates permettent des optimisations impossibles au compilateur

n°573789
Joel F
Real men use unique_ptr
Posté le 23-11-2003 à 12:43:43  profilanswer
 

à qui le dis tu :D
 
parole d'expert ! :sol:
le template l'essayer c'est l'adopter


Message édité par Joel F le 23-11-2003 à 12:53:45
n°573791
skeye
Posté le 23-11-2003 à 12:45:58  profilanswer
 

Joel F a écrit :

a qui le dit tu :D
 
parole d'expert ! :sol:
le tempalte l'essayé c l'adopté


Fais gaffe, ton binôme te contamine!:o


Message édité par skeye le 23-11-2003 à 12:47:33

---------------
Can't buy what I want because it's free -
n°573792
Taz
bisounours-codeur
Posté le 23-11-2003 à 12:46:46  profilanswer
 

skeye a écrit :


Fais gaffe, ton binôme te contamine!:o

quand on a que ça à faire, on corrige l'orthographe jusqu'au bout :o

n°573795
skeye
Posté le 23-11-2003 à 12:48:03  profilanswer
 

Taz a écrit :

quand on a que ça à faire, on corrige l'orthographe jusqu'au bout :o


:ange:
c'est ce qui me faisait le plus souffrir...:lol:


---------------
Can't buy what I want because it's free -
n°573796
Taz
bisounours-codeur
Posté le 23-11-2003 à 12:48:39  profilanswer
 

moi c'était plutôt
 
« tempalte »

n°573801
Joel F
Real men use unique_ptr
Posté le 23-11-2003 à 12:53:53  profilanswer
 

quelles fautes ?

n°573802
Taz
bisounours-codeur
Posté le 23-11-2003 à 12:54:37  profilanswer
 

t'es tellement habitué à le triturer que tu ne t'en rends même plus compte

n°573805
Joel F
Real men use unique_ptr
Posté le 23-11-2003 à 12:56:41  profilanswer
 

Taz a écrit :

t'es tellement habitué à le triturer que tu ne t'en rends même plus compte


 
clair :/ ca fait peur quelque part ....
 
bon a part ça , je crois qu'ils sont tous partis, ponds nous la soluce :p

n°573809
Taz
bisounours-codeur
Posté le 23-11-2003 à 12:59:57  profilanswer
 

bah tu l'as si tu crois que c'est le moment de la sortir vas y... j'aimerais d'abord que tout le monde comprennes pourquoi la dernière solution est invalide ... parce qu'un tableau n'est pas une l-value

n°573813
verdoux
And I'm still waiting
Posté le 23-11-2003 à 13:03:03  profilanswer
 

Joel F a écrit :


 
d'autan tplus que le template produit generalement un code plsu compact que du code à tonton ... mais c'est pas grave


Ben c'est pas le cas.
Entre

Code :
  1. define TAILLE(T) (sizeof(T))/(sizeof(T[0]))


et

Code :
  1. template<typename T, int N> int  tailleTab(T (& )[N])
  2. {
  3. return N;
  4. }


J'ai quand même un facteur 4 en taille d'exe (avec g++ -O2 + strip) avec 400 tableaux de tailles différentes.


Message édité par verdoux le 23-11-2003 à 13:03:21
n°573814
Taz
bisounours-codeur
Posté le 23-11-2003 à 13:04:40  profilanswer
 

bon la solution parfaite est  
 

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


 
quand à ton argument fallacieux, t'as du raté ke chapitre optimisation dans ton cours

n°573815
nraynaud
lol
Posté le 23-11-2003 à 13:05:49  profilanswer
 

tiens, je suis en train de penser qu'avec des bidouilles de templates on doit pouvoir faire un scanf _entièrement_ statique (par évaluation partielle) mais ça me fait chier de me lancer dans du C++.


---------------
trainoo.com, c'est fini
n°573827
verdoux
And I'm still waiting
Posté le 23-11-2003 à 13:29:30  profilanswer
 

Taz a écrit :


quand à ton argument fallacieux, t'as du raté ke chapitre optimisation dans ton cours


Ah merde, j'avais oublié que le compilo savait pas inliner tout seul.

n°573828
Taz
bisounours-codeur
Posté le 23-11-2003 à 13:30:37  profilanswer
 

verdoux a écrit :


Ah merde, j'avais oublié que le compilo savait pas inliner tout seul.

je parlais pas de ça ... je parlais de ton histoire de facteur 4 à la con

n°573830
verdoux
And I'm still waiting
Posté le 23-11-2003 à 13:32:16  profilanswer
 

Taz a écrit :

je parlais pas de ça ... je parlais de ton histoire de facteur 4 à la con


Nan, mais avec le inline, y a plus de facteur 4.
L'assembleur produit est le même, ce qui est logique avec un compilo récent.


Message édité par verdoux le 23-11-2003 à 13:42:21
n°573832
Joel F
Real men use unique_ptr
Posté le 23-11-2003 à 13:35:09  profilanswer
 

nraynaud a écrit :

tiens, je suis en train de penser qu'avec des bidouilles de templates on doit pouvoir faire un scanf _entièrement_ statique (par évaluation partielle) mais ça me fait chier de me lancer dans du C++.


 
Oui j'en utilise un dans ma bibliothéque de calcul vectoriel :p
 
hmmm j'avais mal lu


Message édité par Joel F le 23-11-2003 à 13:36:51
n°573839
Taz
bisounours-codeur
Posté le 23-11-2003 à 13:42:16  profilanswer
 

tiens j'ai un autre défi dans la tête. J'ai pas beaucoup d'inventivité, mais ça serait un truc chouette niveau chauffage de cerveau :D

n°573841
Joel F
Real men use unique_ptr
Posté le 23-11-2003 à 13:47:14  profilanswer
 

moi j'ai plein d'idée mais bon ... je chui pas prés d'avoir de réponses :p

n°573842
Taz
bisounours-codeur
Posté le 23-11-2003 à 13:48:26  profilanswer
 

ouais, je parle d'un truc dont on aurait la solution, qui soit accessible et marrant, qui repose sur une un petit raisonnement astucieux


Message édité par Taz le 23-11-2003 à 13:48:38
n°573843
Joel F
Real men use unique_ptr
Posté le 23-11-2003 à 13:49:55  profilanswer
 

moi aussi

n°573848
LajioT
Posté le 23-11-2003 à 14:11:49  profilanswer
 

Bonjour,  
 
Comment utiliser la sublime fonction donnant la taille d'un tableau ?

n°573849
Taz
bisounours-codeur
Posté le 23-11-2003 à 14:12:30  profilanswer
 

et ben tu prends un tableau t, et size(t) te retourne sa taille

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4

Aller à :
Ajouter une réponse
 

Sujets relatifs
Redimensionnement de tableauProblem de dimension de tableau en CSS
Tri un tableau de tableaux ?VB + Classe - Tableau d'objet
[C] Taille d'un tableau d'int ?rafraichissement d'un tableau dynamique a l'aide de boutons
Modifier des éléments créé par une fonctionPassage de pointeur de fonction membre à une fonction
taille d'un char*[] avec \0 
Plus de sujets relatifs à : défi de la semaine : fonction retournant la taille d'un tableau


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