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

 


 Mot :   Pseudo :  
 
 Page :   1  2  3  4  5  6  7
Auteur Sujet :

demande Aide sur un exercice!

n°868283
lsdYoYo
gravity powered
Posté le 08-10-2004 à 17:15:03  profilanswer
 

Reprise du message précédent :
http://forum.hardware.fr/hardwaref [...] 8490-1.htm
No comments.


---------------
If I want to fail and succeed, which I have done ?
mood
Publicité
Posté le 08-10-2004 à 17:15:03  profilanswer
 

n°868284
lsdYoYo
gravity powered
Posté le 08-10-2004 à 17:17:06  profilanswer
 

Masklinn a écrit :

Citation :

- cris56, parcourir un tableau avec un "int" est du suicide ?  (je me disais aussi, c'est bizarre tous ces anges qui volent autour !) Mmmmouais, unsigned est-il mieux ? Bof, un débordement d'indice est un débordement d'indice et ce, même en inférieur : -1 est-il pire que 65535 ou 4294967295 ? Perso, si ça arrive, je trouve qu'au debug -1 est plus facile à tracer.


il recommande d'utiliser size_t, sombre vébéteux :o


size_t = unsigned. Qu'est-ce qu'un vébéteux ?


---------------
If I want to fail and succeed, which I have done ?
n°868295
masklinn
í dag viðrar vel til loftárása
Posté le 08-10-2004 à 17:21:51  profilanswer
 

lsdyoyo a écrit :

Qu'est-ce qu'un vébéteux ?


un mec qui code en VB [:spamafote]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°868302
cris56
Posté le 08-10-2004 à 17:24:40  profilanswer
 

sous turbo C, size_t c'est un unsigned ?
 
j'ai aucune moyen de verifier mais deja que les int sont sur 16 bits...
 
pour moi ca serais plutot un unsigned long

n°868316
Taz
bisounours-codeur
Posté le 08-10-2004 à 17:30:42  profilanswer
 

lsdyoyo a écrit :

Arrêtez vos délires.
- Taz, tu crois sincèrement qu'un jour size_t sera autre chose qu'un unsigned ? Je ne vois pas trop dans ce cas pourquoi unsigned est censé coller à la taille des registres CPU. Et si, pour la portabilité, tu te préoccupes du nombre d'octet occupé par les types de variable, il faut bannir "int" et rester avec "short" et "long".

on ne compte plus les architectures où size_t est un long unsigned. unsigned n'est censé collé à rien du tout. Classiquement, on trouve sizeof(void*) == sizeof(long) et size_t de la même taille. La portabilité tu nous en parle ? la première chose à considérer, c'est de ne pas faire des prédictions foireuses sur la taille en octets. Réveille-toi, y a pas que le x86-32bits dans la vie.
 
le reste de ton blabla ... ça vaut pas un clou. C'est parce que t'as de mauvaises habitudes et que tu es incapable de bien utiliser le mot-clef const et size_t qu'il faut que les débutants fassent de même. D'ailleurs tu crois qu'ils ont quelle opinion d'un mec qui frime mais qui n'est pas capable de conceptualiser le type size_t ?
 

n°868320
Taz
bisounours-codeur
Posté le 08-10-2004 à 17:33:49  profilanswer
 

lsdyoyo a écrit :

size_t = unsigned.

faux. c'est dépendant de ta plateforme. et quand bien même ça serait égal, size_t a une sémantique que n'a pas un unsigned.

n°868336
pains-aux-​raisins
Fatal error
Posté le 08-10-2004 à 17:51:44  profilanswer
 

[:drapeau_blanc] Juste pour ma culture à une question que je ne me suis jamais posé : qu'elle est la sémantique de size_t ?

n°868391
Sve@r
Posté le 08-10-2004 à 19:06:22  profilanswer
 

lsdyoyo a écrit :

Dans ce thread, j'ai trouvé bien l'initative de Sve@r de montrer différentes approches du problème.


Merci
 
Je me disais que c'était dommage et peu évolutif de ne faire que quelques vérifs aussi ciblées (tous impairs, tous égaux, etc) et j'avais un peu envie de m'éclater à faire un exercice où on pourrait revenir plus tard pour définir quelles vérifs on fait sur les 3 nombres.
 
J'avais en plus essayé de faire aussi "propre" que Taz le souhaite mais j'ai pas réussi ;)
En tout cas cela a déclanché une méga polémique...


Message édité par Sve@r le 08-10-2004 à 19:11:57

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°868445
lsdYoYo
gravity powered
Posté le 08-10-2004 à 20:03:55  profilanswer
 

J'en ai plus que marre de me défendre sur des détails. Vous n'avez toujours pas compris l'idée que je voulais faire passer. Me répéter encore est inutile...
 
C'est uniquement pour votre culture :

Citation :

sous turbo C, size_t c'est un unsigned ?
j'ai aucune moyen de verifier mais deja que les int sont sur 16 bits...
pour moi ca serais plutot un unsigned long.

Citation :

Classiquement, on trouve sizeof(void*) == sizeof(long) et size_t de la même taille. La portabilité tu nous en parle ? la première chose à considérer, c'est de ne pas faire des prédictions foireuses sur la taille en octets.


Désolé les gars : perdu !
Dans le monde 16 bits, on a : sizeof(int) == sizeof(size_t) == WORD == 2
(je vais vous faire mal : sizeof(void *) == 2 OU 4 !, dépend d'options de compile)
Dans le monde 32 bits, on a : sizeof(int) == sizeof(size_t) == DWORD == 4
Et dans le monde 64 bits on aura : sizeof(int) > sizeof(long)
 

Citation :

Réveille-toi, y a pas que le x86-32bits dans la vie.

Fun ! Dire ça à un gars qui a fait des années de developpement sous DOS ! Maintenant, c'est vrai que le portage Windows prend pas mal de mon temps. Je ferais l'effort de me rappeler ton conseil.


Message édité par lsdYoYo le 08-10-2004 à 20:04:53
n°868470
Taz
bisounours-codeur
Posté le 08-10-2004 à 20:32:53  profilanswer
 

lsdyoyo a écrit :


Et dans le monde 64 bits on aura : sizeof(int) > sizeof(long)

allez casse-toi ...
 
si t'avais un peu d'estime pour toi même, t'aurais pris la peine de lire la dernière révision juste au cas où ... ils parleraient de size_t ...

mood
Publicité
Posté le 08-10-2004 à 20:32:53  profilanswer
 

n°868573
matafan
Posté le 08-10-2004 à 21:48:02  profilanswer
 

lsdyoyo tu ne sais manifestement pas de quoi tu parles. Dans le "monde 64 bits" (et encore faut savoir de quoi on parle) on aura generalement sizeof(long) == 64 et sizeof(int) = 32. Quant a dire WORD == 2, ca aussi c'est faux. Un mot c'est la quantite naturellement manipulee par une architecture (et encore), et ca depend donc de l'architecture.

n°868586
Taz
bisounours-codeur
Posté le 08-10-2004 à 21:55:11  profilanswer
 

sizeof(long) == 64  
 
 
tu l'a payée combien ta bécane 512bits ?

n°868780
matafan
Posté le 09-10-2004 à 00:22:26  profilanswer
 

Ouais bon tout le monde a compris :whistle:

n°869042
pains-aux-​raisins
Fatal error
Posté le 09-10-2004 à 15:15:26  profilanswer
 

pains-aux-raisins a écrit :

[:drapeau_blanc] Juste pour ma culture à une question que je ne me suis jamais posé : qu'elle est la sémantique de size_t ?


 :) up

n°869223
Sve@r
Posté le 09-10-2004 à 21:17:05  profilanswer
 

pains-aux-raisins a écrit :

[:drapeau_blanc] Juste pour ma culture à une question que je ne me suis jamais posé : qu'elle est la sémantique de size_t ?


size_t est le type de la variable qui stocke la taille d'un fichier dans la structure "stat" (voir dans "/usr/include/sys/stat.h" ).
Cette structure "stat" est utilisée pour récupérer les informations d'un fichier (propriétaire, droits, nb de liens, taille, etc) sous Unix Cette structure possède un membre "st_size" de type "size_t"
size pour taille
t pour type


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°869276
Taz
bisounours-codeur
Posté le 10-10-2004 à 00:13:06  profilanswer
 

rien à voir avec stat .... faut tout de dire à toi
 
 
size_t c'est le type de retour de l'opérateur sizeof. C'est donc un type tout indiquée pour exprimer une quantité de 'byte'. On le retrouve donc comme argument de malloc, fread, etc

n°869282
matafan
Posté le 10-10-2004 à 00:31:34  profilanswer
 

D'autant que st_size dans struct stat est de type off_t :sarcastic:

n°869345
Sve@r
Posté le 10-10-2004 à 11:24:14  profilanswer
 

matafan a écrit :

D'autant que st_size dans struct stat est de type off_t :sarcastic:


Pas partout, et surtout pas dans la norme POSIX...http://www.jaluna.com/doc/c5/html/ [...] posix.html
 

Taz a écrit :

faut tout de dire à toi  


Ben tu sais, les trucs que tu dis toi ne sont pas toujours vrais. Notemment quand j'ai demandé si "fpurge" existait (http://forum.hardware.fr/hardwaref [...] tm#t817589) tu as répondu avec la morgue qui te caractérise "ça n'existe pas" (http://forum.hardware.fr/hardwaref [...] tm#t817590)
 
Alors va donc voir là http://www.epita.fr/docs/man3/fpurge.3.html puis ensuite peut-être que tu te mettras à réfléchir à ce que les autres disent avant de les envoyer bouler.. surtout que certains autres ne sont pas que sous C++Builder ni que sous du Linux !!!


Message édité par Sve@r le 10-10-2004 à 11:32:19

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°869373
cris56
Posté le 10-10-2004 à 12:59:53  profilanswer
 

attention fpurge c'est pas standard, c'est meme indiqué sur ton lien
 
donc à oublier
 
c'est comme les fflush de vs qui ont un effet déterminé sur <input stream>, apres quand tu portes le code ca peux faire planter
 
et puis la logique c'est de lire ce qu'on saisie

n°869375
Sve@r
Posté le 10-10-2004 à 13:04:39  profilanswer
 

cris56 a écrit :

attention fpurge c'est pas standard, c'est meme indiqué sur ton lien
 
donc à oublier
 
c'est comme les fflush de vs qui ont un effet déterminé sur <input stream>, apres quand tu portes le code ca peux faire planter
 
et puis la logique c'est de lire ce qu'on saisie


 
Vivi, tu as raison. "fpurge" ou "__fpurge (sous Linux)" n'est pas une bonne idée je sais. Mais l'idée du post précédent était de bien faire comprendre que les remarques de Taz (même si c'est ton copain) ne sont pas forcément les meilleures et qu'il ne sait pas tout...


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°869378
masklinn
í dag viðrar vel til loftárása
Posté le 10-10-2004 à 13:10:40  profilanswer
 

Taz code en C/C++ standard, donc pour lui quand une fonction (fpurge) ne fait pas partie des standards ou d'une lib bien précise non restreinte à un compilateur unique elle n'existe pas [:spamafote]  
Et ca se comprend [:spamafote]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°869380
Taz
bisounours-codeur
Posté le 10-10-2004 à 13:13:33  profilanswer
 

Si : je sais à qui je parle, et que quand on est étudiant, on travaille sur des plateformes hétérogènes et qu'on a aucune idée de ses futures emplois. Je sais aussi que respecter une norme c'est une bonne exercice de style, très payant.
 
Quant à ton exemple de fpurge, quand tu lis la doc, tu vois que fpurge est sous BSD et que Linux fournit un __fpurge ...
 
Quand c'est faisable en standard, il faut le faire en standard. Peut-être que tu es loin des considérations de portabilité, mais moi je code un truc, il faut qu'il marche sur Linux, BSD, Solaris, AIX ou même windows
 
un truc avec un double _ en préfixe, je veux même pas en entendre parler, il vaut mieux faire comme si ça n'existait pas.

n°869384
fodger
ARRRACHHEE TTAAA FFFOUUFFOUNE!
Posté le 10-10-2004 à 13:20:47  profilanswer
 

heu.. au risque de m'incruster comme un poulpe sur la soupe...
 
voilà ce que dit la norme ansi :
La taille d'un char est de 1 octet.
 
char  
 caractère  -128  127  1  
 
short  
 entier court  -32768  32767  2  
 
int  
 entier standard  -32768  32767  2 ou 4
 
long  
 entier long  -2147483648  2147483647  4  
 
Maintenant à partir du moment où on utilise ça le problème de portabilité est faible.
 
Je bosse sur une appli dépassant le 500k lignes écrite à l'origine pour unix, elle tourne aujourd'hui sous windows sans prob maj.
Les prob de portabilités ne venaient pas de là en tout cas.


Message édité par fodger le 10-10-2004 à 14:02:57
n°869390
masklinn
í dag viðrar vel til loftárása
Posté le 10-10-2004 à 13:27:47  profilanswer
 

heuuu t'as pas un peu mis des = à la place des <?
 
non parce que short = int = long = non signé...
[:totoz]
 
et taz il m'a déjà grondé parce que la taille d'un char peut être différent d'1 octet [:maitre drasche]


Message édité par masklinn le 10-10-2004 à 13:28:39

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°869391
cris56
Posté le 10-10-2004 à 13:30:19  profilanswer
 

oui, char = 1 byte et il est sous entendu que c'est pas forcement 8 bits

n°869393
cris56
Posté le 10-10-2004 à 13:31:06  profilanswer
 

Citation :

The size of these objects is also machine-dependent.

n°869414
fodger
ARRRACHHEE TTAAA FFFOUUFFOUNE!
Posté le 10-10-2004 à 13:49:51  profilanswer
 

Masklinn a écrit :

heuuu t'as pas un peu mis des = à la place des <?
 
non parce que short = int = long = non signé...
[:totoz]
 
et taz il m'a déjà grondé parce que la taille d'un char peut être différent d'1 octet [:maitre drasche]


 
Signé ou non ça fait la même taille. Les valeures sont définies comme telle par la norme ansi.
 
Après rien n'empêche de revoir l'implémentation éffectivement.
 
Mais l'intérêt de suivre la norme, c'est la portabilité justement.


Message édité par fodger le 10-10-2004 à 13:50:38
n°869419
masklinn
í dag viðrar vel til loftárása
Posté le 10-10-2004 à 13:51:55  profilanswer
 

non mais là le problème c'est que t'as écrit texto "short = long"


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°869427
fodger
ARRRACHHEE TTAAA FFFOUUFFOUNE!
Posté le 10-10-2004 à 13:58:00  profilanswer
 

cris56 a écrit :

oui, char = 1 byte et il est sous entendu que c'est pas forcement 8 bits


 
Si pour la norme ansi c'est 1 octet.

n°869429
fodger
ARRRACHHEE TTAAA FFFOUUFFOUNE!
Posté le 10-10-2004 à 13:59:33  profilanswer
 

Masklinn a écrit :

non mais là le problème c'est que t'as écrit texto "short = long"


 
mea culpa j'ai fait un copier coller:D...
 
short = 2 octets of course.
 
y'a pas besoin de se prendre la tête avec les size_t, si on sait qu'on va dépasser 65535, on déclare un long int et c'est réglé.


Message édité par fodger le 10-10-2004 à 14:04:00
n°869434
cris56
Posté le 10-10-2004 à 14:04:23  profilanswer
 

Fodger a écrit :

Si pour la norme ansi c'est 1 octet.


 
moi je parle de c89 plus communement appelé c ansi
 
 

Citation :


char : a single byte, capable of holding one character in the local character set
int : an integer, typically reflecting the natural size of integers on the host machine
float : single-precision floating point
double : double-precision floating point

n°869438
cris56
Posté le 10-10-2004 à 14:06:27  profilanswer
 

Fodger a écrit :


y'a pas besoin de se prendre la tête avec les size_t, si on sait qu'on va dépasser 65535, on déclare un long int et c'est réglé.


 
??
 
mais c'est justement pour  ne pas avoir a te prendre la tete !

n°869440
masklinn
í dag viðrar vel til loftárása
Posté le 10-10-2004 à 14:08:40  profilanswer
 

Fodger a écrit :

mea culpa j'ai fait un copier coller:D...
 
short = 2 octets of course.


justement non, et c'est là dessus que taz m'a engueulé la dernière fois: la norme d'impose pas l'implémentation, elle impose des valeurs qui doivent obligatoirement être gérables par toutes les implémentations
 

Citation :

Minimum Type Limits
 
Any compiler conforming to the Standard must also respect the following limits with respect to the range of values any particular type may accept. Note that these are lower limits: an implementation is free to exceed any or all of these. Note also that the minimum range for a char is dependent on whether or not a char is considered to be signed or unsigned.
Type Minimum Range
signed char -127 to +127
unsigned char 0 to 255
short int -32767 to +32767
unsigned short int 0 to 65535
int -32767 to +32767
unsigned int 0 to 65535
long int -2147483647 to +2147483647
unsigned long int 0 to 4294967295
 
Type Minimum Precision
float 6 digits
double 10 digits
long double 10 digits


(tiré de cet article)
(ca doit aussi imposer des relations d'ordres genre char <= short <= int <= long, mais je les trouve pas dans l'article)
 
donc d'après cette norme rien ne t'empêche de faire des chars sur 32 bits

Citation :

y'a pas besoin de se prendre la tête avec les size_t, si on sait qu'on va dépasser 65535, on déclare un long int et c'est réglé.


 [:gratgrat]  
il suffit de TOUJOURS utiliser size_t et le problème est rêglé, ca permet à tout le monde de reprendre le code et le jour ou ta range va changer (genre qu'il faudra justment gérer des valeurs au dessus de 65535) ca n'aura aucune importance [:spamafote]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°869458
fodger
ARRRACHHEE TTAAA FFFOUUFFOUNE!
Posté le 10-10-2004 à 14:53:04  profilanswer
 

Ce sont des valeures minimum, donc tu es sûr d'avoir au moins ces conditions, le problème de portabilité est donc réduit...


Message édité par fodger le 10-10-2004 à 14:54:15
n°869471
Taz
bisounours-codeur
Posté le 10-10-2004 à 15:33:33  profilanswer
 

Fodger a écrit :

Ce sont des valeures minimum, donc tu es sûr d'avoir au moins ces conditions, le problème de portabilité est donc réduit...

ouais, ouais, fait pas le gentil, tu as parjuré les saintes écritures, personne ne l'oublie

n°869473
Sve@r
Posté le 10-10-2004 à 15:48:49  profilanswer
 

Masklinn a écrit :

... et c'est là dessus que taz m'a engueulé la dernière fois...


C'est là le problème ! Taz engueule beaucoup de monde et beaucoup de monde se laisse engueuler par cet ersatz de Roi Soleil sans réagir...
 

Taz a écrit :

ouais, ouais, fait pas le gentil, tu as parjuré les saintes écritures, personne ne l'oublie


Je suis peut-être naïf mais je suis étonné que "sizeof()" qui est un opérateur du C et qui est donc codé en natif dans le langage au même titre que d'autres opérateurs ("+", "-", "++, "%", "&&" etc) donne comme résultat une valeur de type "size_t" alors que le type "size_t" n'est pas natif du langage...
 
Contrairement à ce que tu dis, Taz, ces deux pages http://publications.gbdirect.co.uk [...] alloc.html et http://www.lri.fr/~aze/page_c/aide_c/sizeof.html disent que "sizeof()" est "unsigned int"
 
Evidemment, ceux qui ont écrits ces pages peuvent se tromper. Mais dès demain j'essaierai un "man sizeof" sur les différents systèmes que j'utilise...


Message édité par Sve@r le 10-10-2004 à 15:58:26

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°869474
cris56
Posté le 10-10-2004 à 15:58:38  profilanswer
 

size_t c'est un alias d'un type natif, comme ptrdiff_t, ca reviens au meme ?

n°869475
Sve@r
Posté le 10-10-2004 à 16:01:24  profilanswer
 

cris56 a écrit :

size_t c'est un alias d'un type natif, comme ptrdiff_t, ca reviens au meme ?


 
J'en sais vraiment rien !


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°869476
cris56
Posté le 10-10-2004 à 16:05:10  profilanswer
 

ben c'est lapremiere question à se poser
 
et pour les liens ca peut etre des erreurs, on ne compte plus les mythes à ce sujet
 
size_t est le type retour de l'operateur sizeof, c'est un entier non signé

n°869479
masklinn
í dag viðrar vel til loftárása
Posté le 10-10-2004 à 16:06:22  profilanswer
 

Sve@r a écrit :

C'est là le problème ! Taz engueule beaucoup de monde et beaucoup de monde se laisse engueuler par cet ersatz de Roi Soleil sans réagir...


le truc, c'est qu'à chaque fois que j'ai mangé dans ma gueule (ou presque) de la part de taz c'était à raison [:aloy]  
et quand je m'aperçois qu'il se plante (mauvaise interprétation/il va trop loin/manque de chocolat/manque de sexe/autre), ben je lui dit [:spamafote]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°869485
Taz
bisounours-codeur
Posté le 10-10-2004 à 16:16:10  profilanswer
 

Sve@r a écrit :

C'est là le problème ! Taz engueule beaucoup de monde et beaucoup de monde se laisse engueuler par cet ersatz de Roi Soleil sans réagir...
 
 
Je suis peut-être naïf mais je suis étonné que "sizeof()" qui est un opérateur du C et qui est donc codé en natif dans le langage au même titre que d'autres opérateurs ("+", "-", "++, "%", "&&" etc) donne comme résultat une valeur de type "size_t" alors que le type "size_t" n'est pas natif du langage...
 
Contrairement à ce que tu dis, Taz, ces deux pages http://publications.gbdirect.co.uk [...] alloc.html et http://www.lri.fr/~aze/page_c/aide_c/sizeof.html disent que "sizeof()" est "unsigned int"
 
Evidemment, ceux qui ont écrits ces pages peuvent se tromper. Mais dès demain j'essaierai un "man sizeof" sur les différents systèmes que j'utilise...

bla bla bla, t'en as pas marre de raconter n'importe quoi ? tu te décides quand à lire le K&R ou le dernier brouillon du WG14 ? Moi je ne dis rien, je répète. Maintenant si toi tu marches au 'je trouve, donc c'est vrai' ...


Message édité par Taz le 10-10-2004 à 16:16:55
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  6  7

Aller à :
Ajouter une réponse
 

Sujets relatifs
excel - aide sur des fonctionsOnDestroy et CDialog non modale... un peu d'aide svp ;-)
Aide siteaide svp : Jeux en réseaux !
aide requete sql pb syntaxenovice en prog demande aide
Besoin d'aide pour resoudre un bug d affichage xhtml/cssaide fonction qui appel l'événment OnActivate chaque 3 minutes
Besoin d'aide php svp 
Plus de sujets relatifs à : demande Aide sur un exercice!


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