demande Aide sur un exercice! - C - Programmation
Marsh Posté le 30-09-2004 à 19:03:16
Turkoglu a écrit : mon programme: |
Ce source prouve bien qu'on peut écrire du C assez illisible, voire immonde.
J'ai remarqué 2 erreurs
1) la question "y a-t-il exactement un impair" signifie "y a t-il un et un seul impair". Or le test "impair_2=((x%2==1)||(y%2==1)||(z%2==1));" renvoie vrai s'il y a au-moins un impair, c'est à dire qu'il valide le fait qu'il y ait 2 ou 3 impairs. Soit le test est mal fait, soit la question réelle est "y a-t-il au-moins un impair"
2)
plusgrand=((x+y<z)||(x+y<z)||(y+z<x));
Tu testes 2 fois "(x+y<z)". Il me semble que le second test doit être "(x+z<y)"
Marsh Posté le 30-09-2004 à 21:23:28
Commente ton prog stp
edit: édente également
Marsh Posté le 01-10-2004 à 08:09:43
Je suis étonné que Taz le Foudroyant n'ait pas déjà sévi :-)
if (egaux==(r4=='y'))
Ce n'est pas propre. "egaux" vaut une valeur vraie ou fausse et le test renvoie une valeur vraie ou fausse. Mais les deux valeurs, mêmes si elles sont vraies, ne sont pas forcément égales.
Il vaut mieux écrire "if (egaux && (r4=='y'))"
Idem pour les autres tests
Marsh Posté le 02-10-2004 à 04:32:23
Si, si les deux valeurs sont vrais alors elles sont égales. Vrai c'est 1 et faux c'est 0, pas autre chose. Mais du point de vue du style c'est vrai que c'est discutable.
Marsh Posté le 02-10-2004 à 09:22:09
matafan a écrit : Si, si les deux valeurs sont vrais alors elles sont égales. Vrai c'est 1 et faux c'est 0, pas autre chose. Mais du point de vue du style c'est vrai que c'est discutable. |
Il me semblait avoir lu qu'en C ANSI, une valeur "vraie" est une valeur différente de 0...
Je pense que l'exercice gagnerait à être amélioré. par exemple, les 3 nombres pourraient être stockés dans un tableau. Ensuite, je verrais bien une fonction qui compte et renvoie combien il y a d'impair. Comme cela, on pourrait savoir d'un coup s'il n'y a qu'un nombre impair ou si tous les nombres sont impairs.
Ensuite, à voir...
Marsh Posté le 03-10-2004 à 16:06:57
mon code final.
s'il y a des erreures faites moi signes...
Code :
|
Marsh Posté le 03-10-2004 à 19:41:06
Ton programme fonctionne mais il est quand même optimisable
Tous tes r1, r2, r3 etc ne servent pas à grand chose. Il te suffit d'insérer l'instruction "total++" à chaque fois que tu affiches "bonne réponse" et tu auras au final le nb total de bonnes réponses.
Ensuite, tu pourrais écrire une fonction spéciale qui permette de faire saisir "y" ou "n" et qui vérifierait que la saisie soit bien "y" ou "n". Cela pourrait être de ce style :
Code :
|
Ensuite, toutes tes saisies se feraient de cette façon :
Code :
|
Ensuite, ton test qui vérifie qu'il n'y a qu'un seul nombre impair fonctionne mais il est assez lourd, surtout que tu vérifies une fois qu'ils sont tous impairs et une seconde fois qu'il n'y a qu'un seul impair. Tu pourrais compter au début combien il y a d'impair et utiliser ce compteur quand il faut pour savoir s'il y a 1 seul ou 3 impairs
Par ailleurs, l'instruction "if (machin == (rep == 'y'))" n'est absolument pas "propre". Peut-être que ton programme fonctionnesur ta machine parce que "machin" vaut "1" quand il est vrai et que "rep == 'y'" vaut aussi "1" quand c'est vrai mais il se peut que ton programme ne fonctionne pas sur une autre machine où "vrai" peut valoir n'importe quelle valeur diférente de "0". Sur cet ordi là, tu peux avoir "machin" qui vaut "1" et "rep == 'y'" qui vaut "y". Et ton "if" sera faux alors qu'il devait être vrai.
Il vaut mieux écrire "if (machin && (rep == 'y'))"
Enfin l'utilisation d'un tableau de 3 nombres rendrait ce programme évolutif. Il serait assez facile de le modifier pour travailler sur 4, 5 ou 10 nombres.
Mis à part toutes ces remarques, ton exercice est réussi. Le programme que tu as écrit répond à ce qu'il lui est demandé.
A+
Marsh Posté le 03-10-2004 à 19:49:02
Sve@r a écrit : Par ailleurs, l'instruction "if (machin == (rep == 'y'))" n'est absolument pas "propre". Peut-être que ton programme fonctionnesur ta machine parce que "machin" vaut "1" quand il est vrai et que "rep == 'y'" vaut aussi "1" quand c'est vrai mais il se peut que ton programme ne fonctionne pas sur une autre machine où "vrai" peut valoir n'importe quelle valeur diférente de "0". Sur cet ordi là, tu peux avoir "machin" qui vaut "1" et "rep == 'y'" qui vaut "y". Et ton "if" sera faux alors qu'il devait être vrai. |
Pas équivalent
Parce que si machin est faux et qu'il répond non, ca donne false && false -> false
hors il faut que ca donne true (car la réponse est effectivement la bonne)
Faut faire un XOR et en prendre l'inverse, donc
if !(machin^(rep=='y'))
Marsh Posté le 03-10-2004 à 19:59:43
Masklinn a écrit : Pas équivalent |
Exact, j'y avais pas pensé
Bien vu Masklinn
J'ai pensé à un truc encore plus fou, qui serait assez bien pour les cinglés du C: ce serait que dans cet exercice les questions soient elles-aussi évolutives. Aujourd'hui on vérifie qu'ils sont tous impairs et tous différents, mais demain on vérifie qu'il n'y a que 2 impairs et tous décroissant, etc.
Pour ça, je verrais bien une structure contenant la question, un pointeur sur la fonction qui vérifie que les nombres répondent au critère et la valeur que cette fonction doit renvoyer pour que la réponse soit correcte.
Ensuite, le programmeur définit un tableau de structures de ce type et le programme déroule le tableau. Il pose la qustion, attend la réponse et va vérifier avec la fonction correspondante que la réponse est correcte. Puis il passe à la question suivante etc...
Marsh Posté le 04-10-2004 à 18:27:49
Sve@r a écrit : J'ai pensé à un truc encore plus fou, qui serait assez bien pour les cinglés du C: ce serait que dans cet exercice les questions soient elles-aussi évolutives. Aujourd'hui on vérifie qu'ils sont tous impairs et tous différents, mais demain on vérifie qu'il n'y a que 2 impairs et tous décroissant, etc. |
Bon ben je l'ai fait. Voici le code source du truc:
Code :
|
Et voilà - Si on veut rajouter une question, il suffit de:
- écrire la fonction qui la vérifie
- rajouter la question, le nom de la fonction et le résultat attendu dans le tabQuestion
- prototyper la fonction avant le main
- et recompiler
Si on a envie de s'amuser sur 4, 5 ou 100 nombres, il suffit de modifier la valeur du "#define NB (3)" et recompiler
Marsh Posté le 04-10-2004 à 18:38:10
- return c'est pas une fonction pour ce qui en douteraient
- ça manque cruellement de const
- int main()
- ton NB c'est pas flexible du tout
- utilise size_t pour parcourir un tableau, pas int
- puts est ton ami
- tu ne vérifies jamais le retour de scanf
# scanf("%c", &rep);
# getchar();
#
# /* Tant que réponse différente O/N */
# } while (rep != 'o' && rep != 'n');
ça c'est typiquement une boucle infinie ...
du reste, je comprends ce que c'est que tous ces getchar() dans tous les sens, c'est inutilisable un programme ou il faut passer ton temps à appuyer sur entrée pour rien
Marsh Posté le 04-10-2004 à 19:58:17
Taz a écrit : - return c'est pas une fonction pour ce qui en douteraient |
Le "getchar()" c'est pour ôter du clavier le return qui suit le nombre lorsqu'on le saisit.
Ta définition de boucle infinie est à revoir. Le pgm sort de la boucle quand "rep" vaut "o" ou "n". De plus, j'ai quand-même testé ce pgm sur un système Linux
int main() => ok. Bien qu'une fonction sans typage soit "int" par défaut je suis d'accord avec toi
Je ne comprends pas ce que tu entends par "flexible". On en a déjà discuté. Si le préprocesseur est ton ennemi ce n'est pas le mien.
Pourquoi "size_t" ??? Tu aurais dit un "unsigned long" j'aurais compris mais là...
Marsh Posté le 04-10-2004 à 20:21:37
Sve@r a écrit : Le "getchar()" c'est pour ôter du clavier le return qui suit le nombre lorsqu'on le saisit. |
inutile
Sve@r a écrit : |
non c'est toi là qui n'as pas compris ...
Sve@r a écrit : |
était, fut, mais pas 'soit'. Le changement date de 83 non ?
Sve@r a écrit : |
tu soulèves toi même le problème : si NB change, il faut tout recompiler. Le prends pas comme ça, là dernière fois que je t'ai vu faire une macro, c'était un massacre. Pense également aux nombres de gens qui ont fait un #define NB et voit le nombre de collisions possibles
Sve@r a écrit : |
parce que le type, c'est size_t et rien d'autres. Tu vois, toi même tu te perds déjà à savoir si c'est un int, un long, un unsigned long. size_t c'est size_t, où que tu sois
Marsh Posté le 04-10-2004 à 20:24:29
Sve@r, ca sert a rien, rien que pour le scanf sans controle retour, tu risque la boucle inf en cas de saisie erronée comme l'a dit taz
Marsh Posté le 05-10-2004 à 16:50:10
Taz a écrit : le "getchar()" est inutile |
C'est toi qui m'a appris cela ! Le "scanf(%d)" s'arrête à tout ce qui n'est pas numérique et s'il reste un "return" de trop, j'ai qu'à le sauter. alors je le saute avec "getchar()" !!!
Taz a écrit : était, fut, mais pas 'soit'. Le changement date de 83 non ? |
Ca c'est la norme "C99". dans la norme "C90" une fonction non-déclarée est de type "int"
Taz a écrit : tu soulèves toi même le problème : si NB change, il faut tout recompiler. Le prends pas comme ça, là dernière fois que je t'ai vu faire une macro, c'était un massacre. Pense également aux nombres de gens qui ont fait un #define NB et voit le nombre de collisions possibles |
Si tu veux parler de ma macro où j'avais imbriqué des boucles et des conditionnelles en protégeant le retour à la ligne par des anti-slashes, le tout encapsulé par des accolades, eh bien elle était certainement horrible et immonde mais elle fonctionnait. mais le sujet n'est pas là. Ca t'embête tant de tout recompiler ? Tu veux faire quoi. Utiliser une constante pour la taille du tableau ? Ca c'est autorisé en C99 mais pas en C90. Et si j'ai une collision avec "NB redefined", mon compilateur me le dira mais je ne crois pas que dans les headers officiels il y ait beaucoup de "NB" !!!
Taz a écrit : parce que le type, c'est size_t et rien d'autres. Tu vois, toi même tu te perds déjà à savoir si c'est un int, un long, un unsigned long. size_t c'est size_t, où que tu sois |
Là, je ne comprends plus du tout. Tu me dis "le type c'est" mais type de quoi ? de la taille du tableau ?? Cette taille n'a pas de variable et donc pas de type !!! Ensuite, si le tableau fait moins de 128 éléments je peux le balayer avec un "char" si j'en ai envie. S'il en fait moins de 256 je peux utiliser un "unsigned char". etc etc. Si vraiment je veux être tranquille j'utilise un "unsigned long". Ensuite je ne crois pas que l'on puisse manipuler des tableaux plus grands...
Je tiens quand-même compte de tes remarques et j'ai réécrit le programme en essayant un compromis entre tes opinions et les miennes. Le pauvre Turkoglu n'y comprendra sans-doute plus rien mais j'espère qu'au-moins il satisfaira la TazNorme...
Code :
|
Marsh Posté le 05-10-2004 à 18:16:07
Sve@r a écrit : C'est toi qui m'a appris cela ! Le "scanf(%d)" s'arrête à tout ce qui n'est pas numérique et s'il reste un "return" de trop, j'ai qu'à le sauter. alors je le saute avec "getchar()" !!! |
1) non, pas comme ça, pas de cette manière en tout cas. si tu fais "echo 1 2 3 4 | prog" ça foire.
2) j'ai pas le papier sous les yeux, il me semble que justement, C89 déprécie cette usage du C K&R. Mais ça n'a pas d'importance la norme, c'est un mauvais usage et il est aujourd'hui proscrit
3)une mauvaise macro est une mauvaise macro. c'est pas avec une approche "tant que ça marche c'est bon" qu'on arrive à quelque chose. tu dis n'importe quoi, la taille d'un tableau est une constante quelque soit la norme. C99 permet de faire des VLA. Fais à malloc. Et pour la redéfinition de NB, encore une fois, c'est pas avec ton approche 'tant que ça marche' que t'arriveras à quelque chose. Il se peut qu'avec ton système et avec ces include, ça ne génère pas de conclusion. Il n'y a pas de .h officiel, ils sont libres, ils doivent juste fournir un certains nombres de déclaration. Donc ton NB, c'est dangereux, surtout que c'est évitable. Si tu tiens vraiment à garder ton NB à la noix, et bien utilise le en faisant des prototypes lisibles int t[NB] et pas avec des * explicites qui sont complètement déroutantes.
4) là tu nages complet, tu mélanges tout et son contraire. l'argument de l'opérateur [] est un size_t, il n'y a rien d'autre à dire
5) y a pas de TazNorme et return n'est toujours pas une fonction
Marsh Posté le 05-10-2004 à 18:45:10
Ce type de entre débat ("int" et "size_t", "#define NB" ou pas) revient dans un grand nombre de posts. Je pense qu'il y a deux types biens distincts de projets :
- une application finie pour UN système, UNE utilisation particulière voire UN TP.
- une appli portable ou une bibliothèque de fonctions ou objets : pour DES systèmes / DES compilos...
On comprend aisément que les préoccupations ne soient pas les mêmes. Je pense que Turkoglu doit se situer dans la première catégorie et qu'il doit se sentir plus à l'aise avec "int" qu'avec "size_t". Si le "#define NB" pose un problème à la compile, il changera de symbole comme le dit Sve@r. Une boucle infinie dans un exo pour un tp, bof, dans tout autre projet plus ambitieux, c'est mortel.
Quand on fait son premier exo en C, on se préoccupe rarement de la souplesse du code et encore moins de sa portablité ! Voir son code fonctionner comme on l'entend est la récompense qui donne envie d'aller plus loin. En conclusion, arrêtez de vous étriper (et de poster 88280493 lignes de code !) vous avez raison tous les deux.
Marsh Posté le 05-10-2004 à 19:08:48
moi je vois pas le problème avec size_t c'est pourtant facile à utiliser et sans problème. Surtout c'est conseiller, en milieu universitaire, on travaille très vite sur autre chose que du X86-32bits
Marsh Posté le 05-10-2004 à 20:45:18
lsdyoyo a écrit : Ce type de entre débat ("int" et "size_t", "#define NB" ou pas) revient dans un grand nombre de posts. Je pense qu'il y a deux types biens distincts de projets : |
Tu es notre Salomon !!!
Marsh Posté le 05-10-2004 à 21:01:12
le C a été créé pour être portable et tout entier fait pour ça : tout est défini ou indéfini, mais tout point du langage est caractérisé. L'oublier, c'est une erreur de jugement avec ses conséquences
Marsh Posté le 06-10-2004 à 12:19:59
Taz, il faudrait comprendre que le reste du monde n'a pas forcément les mêmes préoccupations ou les mêmes objectifs que toi ! Excuses-nous d'exister.
Encore une fois : peu de programmeurs sont concernés par la portabilité de leur code, et ce, même si le langage qu'ils utilisent a été conçu à la base pour être portable. Dans le même ordre d'idée : le C a été conçu pour écrire des systèmes d'exploitation multi-plateformes, à ton avis combien de développeurs C s'en servent pour ça ?
Une fois admis que la portabilité n'est pas forcément un critère primordial pour UN développement précis, passons à l'étape suivante : la lisibilité du code pour le commun des mortels. A ton avis toujours, un source est-il plus lisible avec des "int" ou des "size_t" ? Est-il obligatoire de le truffer de "const" alors qu'on ne conçoit pas une fonction ou une méthode portable a intégrer dans une API ou une collection d'objets mais simplement et humblement SA petite fonction dans SON petit programme ?
Nous avons (largement) dévié du sujet de départ : le tp de Turkoglu. Son problème est, je pense, tout à fait dans la catégorie "petit programme". Quand on poste dans ce thread on essaie (je sais, c'est pas facile) de se mettre à son niveau . En revanche, nous comptons tous sur toi, Taz, pour aider le developpeur qui s'embarquera dans un développement multi-OS de composants graphique ou encore sur les précautions à prendre en C++ avec les projets de 10.000+ lignes de code.
Marsh Posté le 06-10-2004 à 12:24:14
non, toi faudrait que tu comprennes que quand tu commences à étudier à la Fac, tu n'as __aucune__ idée de où et comment tu vas travailler. Alors si on t'apprends des langages universels, c'est pas pour rien. Si tu veux foutre en l'air ton apprentissage c'est toi qui vois.
Citation : A ton avis toujours, un source est-il plus lisible avec des "int" ou des "size_t" ? Est-il obligatoire de le truffer de "const" alors qu'on ne conçoit pas une fonction ou une méthode portable a intégrer dans une API ou une collection d'objets mais simplement et humblement SA petite fonction dans SON petit programme ? |
oui et oui. Mais fallait le dire tout de suite que tu fesais pas de C, ça m'aurait éviter de répondre ...
Et ça n'a rien à voir avec la taille du projet. Même sur 100 lignes, ces règles sont canoniques et une erreur de constness est un bug grave.
Marsh Posté le 06-10-2004 à 17:54:32
Ah, tu as appris en fac. Ok, je vois mieux le tableau. Premièrement, attention tu vas avoir un choc : je n'ai jamais été en fac. Si, si, j't'assures et en plus (second choc) : je ne suis pas le seul ! Je sévis dans un autre monde que le tiens.
Dans cet autre monde :
- Nous développons des applications pas uniquement pour la beauté de la chose. Je sais, j'ai honte de le dire.
- On trouve que des sources avec des "int" sont plus lisibles qu'avec des "size_t". D'une manière générale, on est attaché à la simplicité. Il faudrait pas que le gus qui risque de repasser un jour soit perdu dans des syntaxes pas évidentes et inutiles (provoc).
- Très peu de développement sont conçu pour être portables. Bonjour les contraintes et le temps à y passer pour un résultat même pas garanti le jour où il faudrait changer de système ! Et donc, on a rarement que des étudiants soient formés à rendre leur source portable.
- On a besoin d'un prog, on le développe pour un système, on le debug, on l'installe et basta !
- Il existe des contraintes de temps de réalisation et de budget. On a pas toujours le temps de faire joli pour le sport. Quand faut que l'appli soit installée pour hier...
En conclusion de cette première partie : quel décalage entre l'école et le monde des extras-terrestres !
Citation : Mais fallait le dire tout de suite que tu fesais pas de C, ça m'aurait éviter de répondre ... |
Ca fait 15 ans que je fais du C et depuis peu du C++. Depuis près de 10 ans, je bosse dans un petite boîte (nous sommes 3). Nous développons une application en C (avec un soupçon d'asm) d'environ 75.000 lignes de code. En plus, c'est bourré de "char *" là dedans ! Ah ça, c'est sûr, faut faire gaffe, mais bonjour la vitesse. Cette appli est critique et tourne 24h/24, 7j/7 chez nos clients. Ils peuvent nous appeler à toute heure du jour et de la nuit en cas de plantage (oui, je l'ai dit, cette appli est critique pour eux). Nous avons environ 25 sociétés clientes pour environ une centaine de postes en réseau. Le résultat est que, ça va, merci, on dort bien la nuit. La fiabilité de notre soft est dans une bonne moyenne. Tiens, un détail, y'a AUCUN "const" ni "size_t" dans les sources, curieux non ?
Certains l'auront deviné, nous sommes (encore ) sous DOS. Pour des raisons évidente d'obsolescence, nous attaquons le développement sous Windows. Le pire c'est qu'on a jamais pris de précaution de portabilité. Dommage ? Non : il faut presque tout récrire car trop de choses diffèrent ("G"UI, base de données...) et... ...les sources sont plus faciles à porter !
Allez, assez raconté ma vie, à toi.
Marsh Posté le 06-10-2004 à 18:11:24
ReplyMarsh Posté le 06-10-2004 à 18:58:59
Pourquoi me plaindre ?
Et qu'est-ce qui fait peur ?
Marsh Posté le 06-10-2004 à 19:58:40
J'ai pas fait la fac non plus... et je supporte plutôt l'avis de Taz. En fait je vois pas trop le rapport avec la fac... c'est pas parce qu'on y étudie qu'on pense comme les profs. Donc tu veux vraiment savoir pourquoi ça fait peur ? Réponse: vous êtes 3 avec un soft qui, tel que tu le décris, doit être à la merci de la moindre erreur d'inatention lors de son évolution. Bin oui pas de const c'est marrant, mais c'est jamais que 6 caractères avec l'espace, et oh combien ça aide les const pour ne pas replonger dans la doc et/ou le code de la fonction appelée, pour faire des vérifs sup' à la compil, etc. Pour size_t passe encore, moi même je suis pas.. hum.
Mais tu vois tu l'avoues toi mm: vous devez tout réécrire pour le porter. Je vois pas en quoi c'est plus facile à porter quand c'est écrit sans const ni size_t. Enfin je suis surtout convaincu que c'est plus dur.
Ça coûte rien de coder propre et ça change la vie. Vu que t'as l'occasion de réécrire... essaie tu verras.
PS: alors sérieux l'argument des perfs (le "bonjour la vitesse" ) c'est vraiment n'importe quoi. Un const ne change qu'à la compil... idem pour tout ce qui est propre, on parle pas des algos là mais de la syntaxe et de la méthode.
Marsh Posté le 06-10-2004 à 20:09:46
ah j'oubliais, les fonctions de la bibliothèque standard utilisent des size_t, alors n'oubliez pas de caster (sizeof, malloc, fread/fwrite, etc etc) . Et le jour où tu es sur une plateforme ou sizeof(int) != sizeof(size_t), tu bénis ton code avec tes size_t
et détrompe toi, un const bien placé (surtout quand il est avec son copain static, ça fait des miracles
Marsh Posté le 06-10-2004 à 20:12:16
c'est completement stupide, c'est justement l'absence de const et de size_t qui tue la lisibilité du code
Marsh Posté le 06-10-2004 à 20:20:59
j'ajoute que parcourir un tableau d'entier avec un int sous turbo c c'est du suicide
Marsh Posté le 07-10-2004 à 02:24:18
lsdyoyo a écrit : Ah, tu as appris en fac. Ok, je vois mieux le tableau. Premièrement, attention tu vas avoir un choc : je n'ai jamais été en fac. Si, si, j't'assures et en plus (second choc) : je ne suis pas le seul ! Je sévis dans un autre monde que le tiens.
|
Ben y'a vraiment pas de quoi t'en vanter.
Tu sevis (terme bien choisi) effectivement dans un autre monde.
A+,
Marsh Posté le 08-10-2004 à 17:03:29
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".
- 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.
- g012, relis mon post. Le "bonjour la vitesse" parlait des "char *" et en aucun cas des const et autres size_t (c'est gentil de m'indiquer qu'ils ne changent rien à la vitesse d'exécution !). Quand j'ai dit que les sources sont plus faciles à porter, je me suis emporté. Je voulais surtout dire que ça n'aurait aidé en rien de concevoir du code portable quand le problème ne vient pas du code mais de l'environnement comme l'interface utilisateur ou la base de données.
Vous critiquez le développement de notre application sans rien en connaître ni tenir compte du résultat. Notez que je n'ai jamais affirmé que nos méthodes étaient les seules possibles ni que nos sources étaient irréprochables.
Je tenais à montrer qu'il est viable de produire du code sans s'occuper de sa portabilité ainsi que d'autres précautions. Referais-je pareil pour d'autres types de projet ? Sans doute pas.
J'ai écrit quelques classes de base pour nos futurs besoins en C++ sous Windows et, par exemple, elles sont truffées de "const" ! D'ailleurs, on en avait déjà quelques-uns dans nos sources C à certains endroits clés, mais en proportion de tous ceux où on auraient pu en coller, c'est négligeable.
Si j'ai parlé de nos sources c'est que je suis surpris par le nombre de posts qui critiquent le code publié uniquement sur la forme. Ca n'aide en rien. Dans ce thread, j'ai trouvé bien l'initative de Sve@r de montrer différentes approches du problème.
Et bam, prends-toi ça ! Sans compter le ton employé qui est parfois limite. Si seulement ce n'était qu'un exemple isolé (je ne sais plus qui a dit qu'il ne faut plus poster de code sur hardware.fr) ?
As-tu remarqué, Taz (was grilled), le nombre de gens qui te demandent des précisions lorsque tu leur parles dans un jargon incompréhensible ? Faut se mettre au même niveau que l'autre...
En final, je pensais naïvement que les sources servaient aussi à être compilées un jour et que les forums servaient à aider les gens.
Marsh Posté le 08-10-2004 à 17:12:51
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
Marsh Posté le 08-10-2004 à 17:15:03
http://forum.hardware.fr/hardwaref [...] 8490-1.htm
No comments.
Marsh Posté le 30-09-2004 à 16:47:05
Edité suite aux remarques!
alors!
voici l'exercice:
ecrire un programme qui demande à l'utilisateur de taper 3 entiers.
qui ensuite,lui pose les questions suivantes:
1)sont-ils dans l'ordre croissant?
2)sont-ils tous impairs?
3)Y a t-il exactement un impair?
4)sont-ils tous egaux?
5)sont-ils distincts 2 a 2?( )
6)l'un des trois est-il plus grand que la somme des autres?
La reponse à chacune de ces questions doit etre un des deux caractères 'y' ou 'n'.
Apres chaque réponse de l'utilisateur,afficher "bonne réponse" ou "Mauvaise réponse".
A la fin,afficher le nombre de bonnes réponses.
Mon prog:
a la fin le programme doit m'afficher le nombre de bonne reponse!
comment faire? !
Message édité par turkoglu le 30-09-2004 à 23:18:55