TutorielsVous débutez ? C'est ici qu'on commence !
Mon compte
Recherche
Livre d'or
PublicitéVous devez être inscrit pour pouvoir poster des messages
| Page : Précédente 1 2 3 ... 15 16 17 18 19 20 21 ... 26 27 28 29 Suivante | |||||||||||||||||||||||
| Auteur | Message | ||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 visiteur sur ce sujet (1 anonyme) | |||||||||||||||||||||||
| Page : Précédente 1 2 3 ... 15 16 17 18 19 20 21 ... 26 27 28 29 Suivante | |||||||||||||||||||||||
Chlab_lak
|
# Posté le 16/07/2008 à 21:27:57 | ||||||||||||||||||||||
Tendou : Royaume de dieu![]() Groupe : Membres |
Reprise du dernier message de la page précédente :
Citation : Nanoc@Chlab_lak : Quand tu rencontre un [, tu vérifies la valeur de l'octet pointé. Si c'est pas 0, tu continues comme si il ne s'était rien passé. Si c'est 0, tu sautes à l'instruction qui suit le ] correspondant. C'est-à-dire qui va à la parenthèse fermante qui est liée à la parenthèse ouvrante. Pour le ], c'est la même chose en inversant les valeurs. Merci, j'ai compris, mais j'ai encore des questions: - Apparamment les octects sont des caractères, donc on peut afficher un warning si le code source tente de faire passer la valeur d'un octet en négatif ? - De même on peut afficher un warning si le code source tente d'accéder à l'octet -1 ? - Quand je parle de warning, je pense que l'interpreteur ignore la commande, on peut faire comme ça ? Merci d'avance, je posterais si j'ai d'autres questions. Developpez.com : FAQ C++ | Netecolo.com : Une page d'accueil pour la planète terre | Boost.org : La bibliothèque des programmeurs C++ | Siteduzero.com : Charte du forum C++ | Wikibooks.org : Tous les idiomes du C++ | Gotw.ca : Les archives des "Guru of the Week" | Crossbowlabs.com : Principes avancés de conception objet | H-deb : Site d'un professeur | Fclc++ : Un forum C++ avancé | Roguewave.com : Documentation C++ | Dinkumware.com : Documentation C++ |
||||||||||||||||||||||
gymnopaul
|
# Posté le 16/07/2008 à 21:31:26 | ||||||||||||||||||||||
I could go supersonic !![]() Groupe : Membres |
Woow ça l'air d'être de le super-exo-trop-dur-qui-tue
!Ok je sors ->[] Projet en cours : 2D-3D-Games -> Tutoriels vidéo sur la création de jeux vidéos Mes connaissances : Langages : C - C++ (mon préféré ) - HTML - PHP - SQL3D : Blender |
||||||||||||||||||||||
Bachir ElMagnifico
|
# Posté le 16/07/2008 à 22:07:17 | ||||||||||||||||||||||
http://info-crea.tuxfamily.org![]() Groupe : Membres |
Citation : chab_lack
- Apparamment les octects sont des caractères, donc on peut afficher un warning si le code source tente de faire passer la valeur d'un octet en négatif ? - De même on peut afficher un warning si le code source tente d'accéder à l'octet -1 ? Citation : nanoc Si le pointeur sort du tableau, on le remet à l'autre bout. il n'ya pas de warning, parceque c'est la "norme du langege" ( ) qui le dit.
![]() cherche des partenaires - page de contact. mon tuto sur OgreNewt: partie 1, partie 2, partie 3, partie 4 |
||||||||||||||||||||||
Chlab_lak
|
# Posté le 16/07/2008 à 22:19:01 | ||||||||||||||||||||||
Tendou : Royaume de dieu![]() Groupe : Membres |
Merci, mais ca ne répond qu'à ma deuxième question
Developpez.com : FAQ C++ | Netecolo.com : Une page d'accueil pour la planète terre | Boost.org : La bibliothèque des programmeurs C++ | Siteduzero.com : Charte du forum C++ | Wikibooks.org : Tous les idiomes du C++ | Gotw.ca : Les archives des "Guru of the Week" | Crossbowlabs.com : Principes avancés de conception objet | H-deb : Site d'un professeur | Fclc++ : Un forum C++ avancé | Roguewave.com : Documentation C++ | Dinkumware.com : Documentation C++ |
||||||||||||||||||||||
Nanoc
|
# Posté le 17/07/2008 à 08:45:55 | ||||||||||||||||||||||
Apprenez à utiliser la STL !!![]() Groupe : Membres |
Bachi a raison. Les dépassements à gauche et à droite sont "dans la norme", on retourne à l'autre bout. C'est la même chose pour les octets. 255 + 1 = 0 et ainsi de suite.
Cela veut dire en fait que l'on pourrait supprimer deux instructions. On peut remplacer - par 255 + et < par 29999 > ![]() Ce n'est par contre pas très pratique. Pour le warning, disons que normalement quand il y a une erreur, le programme ne pourra pas continuer ou en tout cas, il ne pourras pas faire ce qu'on attend de lui. Habituellement les interpréteurs (quelque soit le langage) s'arrêtent à la première erreur rencontrée et donnent le numéro de la ligne qui cause l'erreur. On peut imaginer faire la même chose ici, en indiquant quel caractère a causé l'erreur. de toute façon, vu la "pauvreté" du langage, il n'y a pas 50'000 erreurs différentes possibles. Exercices de C++ pour tous les niveaux ! Mes tutos: Tri de Shell --- [C++] Manipulateurs de flux --- [C++] Notions avancées (suite du cours de M@teo21) |
||||||||||||||||||||||
Loumnam
|
# Posté le 17/07/2008 à 11:50:17 | ||||||||||||||||||||||
|
#ifdef C++ #define SFML Groupe : Membres |
Petite question sur les [ et les ]:
Peuvent-ils être imbriqués? Code : Autre
Avec le premier [ qui renvoie au 2e ], et le 2e [ qui renvoie au premier ] ? A+ Essayez la SFML, une super API multimédia orientée objet, multi-plate-forme, écrite en C++, aussi simple mais beaucoup plus rapide que la SDL! |
||||||||||||||||||||||
Nanoc
|
# Posté le 17/07/2008 à 11:54:01 | ||||||||||||||||||||||
Apprenez à utiliser la STL !!![]() Groupe : Membres |
oui bien sûr. Regarde le code BF que j'ai proposé.
C'est justement une des difficultés de ce programme. Exercices de C++ pour tous les niveaux ! Mes tutos: Tri de Shell --- [C++] Manipulateurs de flux --- [C++] Notions avancées (suite du cours de M@teo21) |
||||||||||||||||||||||
Spaz
|
# Posté le 17/07/2008 à 16:08:47 | ||||||||||||||||||||||
|
Groupe : Membres |
Question, c'est fait exprès le coup du '255' ? (et pas 256) je viens de perdre 30 minutes avant de comprendre qu'il fallait quand même vérifier à chaque fois qu'on ajoute ou soustrait
(edit: non, petite arreur dans mon code )Sinon, on peut faire quand même avec des classes, si on préfère ?
Édité
le 17/07/2008 à 16:21:06
par Spaz
|
||||||||||||||||||||||
Bachir ElMagnifico
|
# Posté le 17/07/2008 à 16:15:46 | ||||||||||||||||||||||
http://info-crea.tuxfamily.org![]() Groupe : Membres |
parce que meme la case 0 ça compte
![]() cherche des partenaires - page de contact. mon tuto sur OgreNewt: partie 1, partie 2, partie 3, partie 4 |
||||||||||||||||||||||
Nanoc
|
# Posté le 17/07/2008 à 16:19:03 | ||||||||||||||||||||||
Apprenez à utiliser la STL !!![]() Groupe : Membres |
dans un char, tu peux mettre que 0 à 255 (=2^8-1).
Exercices de C++ pour tous les niveaux ! Mes tutos: Tri de Shell --- [C++] Manipulateurs de flux --- [C++] Notions avancées (suite du cours de M@teo21) |
||||||||||||||||||||||
Spaz
|
# Posté le 17/07/2008 à 16:22:17 | ||||||||||||||||||||||
|
Groupe : Membres |
Oui, je viens de voir, en fait ca venait d'une erreur dans ma classe qui gere plusieurs - d'un coup
ma 2ème question tient toujours, ca gêne si on fait des classes ? |
||||||||||||||||||||||
Chlab_lak
|
# Posté le 17/07/2008 à 16:25:13 | ||||||||||||||||||||||
Tendou : Royaume de dieu![]() Groupe : Membres |
Citation : Nanoc
C'est la même chose pour les octets. 255 + 1 = 0 et ainsi de suite. cela veut donc dire que l'on considère les octets comme des unsigned ? Developpez.com : FAQ C++ | Netecolo.com : Une page d'accueil pour la planète terre | Boost.org : La bibliothèque des programmeurs C++ | Siteduzero.com : Charte du forum C++ | Wikibooks.org : Tous les idiomes du C++ | Gotw.ca : Les archives des "Guru of the Week" | Crossbowlabs.com : Principes avancés de conception objet | H-deb : Site d'un professeur | Fclc++ : Un forum C++ avancé | Roguewave.com : Documentation C++ | Dinkumware.com : Documentation C++ |
||||||||||||||||||||||
Nanoc
|
# Posté le 17/07/2008 à 18:05:55 | ||||||||||||||||||||||
Apprenez à utiliser la STL !!![]() Groupe : Membres |
Oui unsigned char.
Exercices de C++ pour tous les niveaux ! Mes tutos: Tri de Shell --- [C++] Manipulateurs de flux --- [C++] Notions avancées (suite du cours de M@teo21) |
||||||||||||||||||||||
Reponse_Exercices
|
# Posté le 17/07/2008 à 18:27:02 | ||||||||||||||||||||||
|
Groupe : Membres |
Délestage
|
||||||||||||||||||||||
Nanoc
|
# Posté le 17/07/2008 à 18:30:49 | ||||||||||||||||||||||
Apprenez à utiliser la STL !!![]() Groupe : Membres |
Solution du deuxième exercice du mois de juin 2008Bonjour tout le monde ! Il est temps que je dévoile une solution pour l'exercice du mois de juin . Vous avez été 4 à m'envoyer une solution. Ce qui est moins que d'habitude, mais l'exercice était plus corsé. Toutes les solutions fonctionnaient correctement, mais étaient très longues (plus de 150 lignes ajoutées) alors qu'en réalité très peu étaient nécessaire. Partie recherche d'informationDans un premier temps, il fallait se renseigner un peu sur l'opérateur virgule. La chose importante à remarquer est que l'opérateur virgule est celui avec la préséance la plus faible. L'expression : Code : C++
est donc lu par le compilateur comme : Code : C++
Il faudra donc utiliser deux choses différentes. L'opérateur = renverra un objet "Remplisseur" à qui on aura surchargé l'opérateur virgule. ProgrammationEcrivons donc cet opérateur =. Rien de plus simple. Il doir mettre l'entier reçu dans la première case (si elle existe) et renvoyer un "Remplisseur". Code : C++
Vous remarquerez qu'on utilise at() comme ça on a pas besoin de gérer sois-même le cas où le tableau est vide. On laisse ça au vector qui lançera une exception le cas échéant. Regardons de plus près le remplisseur. Il doit écrire dans les cases du tableau. Il faut donc le lui donner à la construction. (D' où le *this dans le code). Il doit également connaître la position à partir de laquelle il doit écrire dans le tableau (vous verrez pourquoi plus loin). On a donc qqch comme : Code : C++
Notez la référence sur le tableau pour éviter la copie et le static qui permet de partager la position entre toutes les instances qu'il faut d'ailleur inialiser en-dehors de la classe. (le static n'est pas nécessaire pour le niveau 1) Code : C++
Quand on a ce code : Code : C++
Il devient après l'exécution de l'opérateur = : Code : C++
Il faut donc surcharger l'opérateur virgule du Remplisseur pour ajouter le nombre suivant. Et pour réutiliser le même code, on va le faire renvoyer un nouveau remplisseur avec la position suivante Code : C++
Remarquez à nouveau le at() pour laisser la gestion de l'exception au vector pour le cas où l'utilisateur veut mettre trop d'éléments dans le vector. Et voilà, c'est tout pour le niveau 1. Niveau 2Pour aller plus loin, il fallait gérer les cas où on affecte un seul chiffre à tout le tableau, ou le cas où il n'y a pas assez d'éléments. Pour faire cela, il fallait penser que les objets Remplisseurs meurent (sont détruits) à la fin de la ligne. On pourrait donc tester dans le destructeur combien vaut m_position. Afin de savoir si il y a eu assez de virgules. Ce qui donne simplement : Code : C++
Si il y a eu qu'un seul Remplisseur de créé, m_position vaut 1 et donc on est dans le cas où on remplit tout le tableau avec une seule valeur. On utilie assign de vector pour le faire. Si m_position est différent de la taille du tableau, c'est qu'il y a pas eu assez d'appel. On lance donc une exception (standard). Il faut pas oublier de remettre m_position à 0. Le code complet est donc: Secret (cliquez pour afficher) Code : C++
Niveau 3Le code de niveau 3 ajoute juste des templates là où il faut : Secret (cliquez pour afficher) Code : C++
Édité
le 17/07/2008 à 19:00:18
par Nanoc
Exercices de C++ pour tous les niveaux ! Mes tutos: Tri de Shell --- [C++] Manipulateurs de flux --- [C++] Notions avancées (suite du cours de M@teo21) |
||||||||||||||||||||||
HunLyxxod
|
# Posté le 17/07/2008 à 21:19:31 | ||||||||||||||||||||||
|
Groupe : Membres |
Avoir, en mode Release, une trentaine de tests d'effectués pour l'assignation de seulement 10 éléments, ça me semble excessif, surtout quand on sait très bien qu'ils seront tous faux.
De plus, le membre static est une mauvaise idée: qu'est ce qui se passe si deux threads essayent d'initialiser un tableau en même temps? Il y a d'autres détails qui serait améliorables (copie d'objet inutile par exemple) mais qui ne sont pas vraiment génant ainsi. |
||||||||||||||||||||||
lmghs
|
# Posté le 17/07/2008 à 21:41:58 | ||||||||||||||||||||||
|
Groupe : Membres |
Pourquoi tu t'embêtes avec la position? Il suffit d'un appel à push_back.
Secret (cliquez pour afficher) Version vite pondue, et perfectible. Code : C++
|
||||||||||||||||||||||
gymnopaul
|
# Posté le 17/07/2008 à 21:45:50 | ||||||||||||||||||||||
I could go supersonic !![]() Groupe : Membres |
Citation : lmghs
Pourquoi tu t'embêtes avec la position? Il suffit d'un appel à push_back. Secret (cliquez pour afficher) Version vite pondue, et perfectible. Code : C++
C'est ce que j'avais d'abord essayé de faire , et ça avait tout à fait marché.
Projet en cours : 2D-3D-Games -> Tutoriels vidéo sur la création de jeux vidéos Mes connaissances : Langages : C - C++ (mon préféré ) - HTML - PHP - SQL3D : Blender |
||||||||||||||||||||||
Chlab_lak
|
# Posté le 17/07/2008 à 22:48:26 | ||||||||||||||||||||||
Tendou : Royaume de dieu![]() Groupe : Membres |
Citation : Spaz
ca gêne si on fait des classes ? Moi j'ai 5 classes différentes (4 si on compte qu'une devrait être imbriquée). Je divise chaque tâche pour permettre un maximum d'amélioration et une facilité dans la maintenance.
Édité
le 17/07/2008 à 22:49:02
par Chlab_lak
Developpez.com : FAQ C++ | Netecolo.com : Une page d'accueil pour la planète terre | Boost.org : La bibliothèque des programmeurs C++ | Siteduzero.com : Charte du forum C++ | Wikibooks.org : Tous les idiomes du C++ | Gotw.ca : Les archives des "Guru of the Week" | Crossbowlabs.com : Principes avancés de conception objet | H-deb : Site d'un professeur | Fclc++ : Un forum C++ avancé | Roguewave.com : Documentation C++ | Dinkumware.com : Documentation C++ |
||||||||||||||||||||||
nono212
|
# Posté le 17/07/2008 à 22:55:14 | ||||||||||||||||||||||
Euh..."a" ?![]() Groupe : Membres |
Citation : Chlab_lak
Citation : Spaz ca gêne si on fait des classes ? Moi j'ai 5 classes différentes (4 si on compte qu'une devrait être imbriquée). Je divise chaque tâche pour permettre un maximum d'amélioration et une facilité dans la maintenance. Ca risque pas d'alourdir le programme ? |
||||||||||||||||||||||
Bachir ElMagnifico
|
# Posté le 17/07/2008 à 23:01:08 | ||||||||||||||||||||||
http://info-crea.tuxfamily.org![]() Groupe : Membres |
pas autant que ça finalement
Édité
le 17/07/2008 à 23:01:40
par Bachir ElMagnifico
![]() cherche des partenaires - page de contact. mon tuto sur OgreNewt: partie 1, partie 2, partie 3, partie 4 |
||||||||||||||||||||||
nono212
|
# Posté le 17/07/2008 à 23:04:22 | ||||||||||||||||||||||
Euh..."a" ?![]() Groupe : Membres |
|||||||||||||||||||||||
Nanoc
|
# Posté le 18/07/2008 à 09:18:34 | ||||||||||||||||||||||
Apprenez à utiliser la STL !!![]() Groupe : Membres |
@Hunlyxxod: Pour les test en effet. Mais bon ce n'est pas un mode de remplissage de tableau très efficace et surtout difficilement utilisable dans un algorithme. Je vois plutôt cela comme un moyen d'initialiser le tableau pour un humain.
Pour le static, en effet ca gêne pour les threads, mais dans ce cas, on peut l'enlever et ajouter un paramètre aux fonctions. Je voulais mettre une fois un static, histoire d'avoir un cas où c'est utilisable. Pour les copies, je sais pas où tu en vois. A part des copies d'int. @lmghs: Oui, mais ça ne correspond pas à l'énoncé. Le but était de remplir un tableau déjà existant et pas d'ajouter des cases à la fin. De plus pour correspondre au "niveau 2", il fallait qu'une expression comme : Code : C++
sur un tableu de 10 cases lève une exception (ou signale une erreur). Il fallait donc un moyen de compter le nombre d'appel à l'opérateur virgule. Au sujet des classes: C'est bien de séparer les concepts, mais je suis quand même d'avis que pour ces exercices plus de 1 ou 2 classes est souvent exagéré. Il n'y a pas beaucoup de concepts vraiment séparés à représenter. Avoir plusieurs fonctions est par contre tout à fait normal. @nono212: Ca n'alourdit rien au moment de la compilation (pour autant que le code soit correct) et donc au niveau du programme final. Exercices de C++ pour tous les niveaux ! Mes tutos: Tri de Shell --- [C++] Manipulateurs de flux --- [C++] Notions avancées (suite du cours de M@teo21) |
||||||||||||||||||||||
Freedom
|
# Posté le 18/07/2008 à 13:04:38 | ||||||||||||||||||||||
|
apprenti Groupe : Membres |
Citation : Chlab_lak
Citation : Spaz ca gêne si on fait des classes ? Moi j'ai 5 classes différentes (4 si on compte qu'une devrait être imbriquée). Je divise chaque tâche pour permettre un maximum d'amélioration et une facilité dans la maintenance. Perso pour BF j'ai 110 lignes (commentées et présentées correctement), alors séparer 110 lignes en plusieurs classes je suis pas sur que ce soit plus lisible, surtout si tu met une classe par fichier ! Citation : The Who We're not gonna take it Never did and never will YAGNI Architecture logicielle & Développement |
||||||||||||||||||||||
lmghs
|
# Posté le 18/07/2008 à 14:33:17 | ||||||||||||||||||||||
|
Groupe : Membres |
Citation : Nanoc
@lmghs: Oui, mais ça ne correspond pas à l'énoncé. Le but était de remplir un tableau déjà existant et pas d'ajouter des cases à la fin. De plus pour correspondre au "niveau 2", il fallait qu'une expression comme : Code : C++
sur un tableau de 10 cases lève une exception (ou signale une erreur). Il fallait donc un moyen de compter le nombre d'appel à l'opérateur virgule. OK. J'avais zappé ce détail dans les énoncés. C'est quand même contre nature. Une affectation devrait ignorer l'ancien état pour en définir un nouveau. (sauf contraintes particulières comme un membre référence ou constant qui feront refuser l'affectation). Surtout avec un vecteur qui est redimensionnable. |
||||||||||||||||||||||
Tealc13
|
# Posté le 19/07/2008 à 23:20:31 | ||||||||||||||||||||||
![]() Groupe : Membres |
Et hop ! Interpréteur Brainfuck terminé.
Par contre le code inconnu est tout simplement énorme ! Et pourtant si petit (172 caractères en enlevant les espaces qui servent à rien). OS : Ubuntu / Windows XP IDE : Code::Blocks 8.02 Editeur : Gedit / Notepad++ 5.0.3 / celui qui me tombe sous la main Navigateur : Firefox 3.0.3 |
||||||||||||||||||||||
Chlab_lak
|
# Posté le 20/07/2008 à 17:38:27 | ||||||||||||||||||||||
Tendou : Royaume de dieu![]() Groupe : Membres |
Juste une question: le code inconnu s'arrête-t-il une fois ? Parce que là j'attents depuis je sais pas combien de temps.
Developpez.com : FAQ C++ | Netecolo.com : Une page d'accueil pour la planète terre | Boost.org : La bibliothèque des programmeurs C++ | Siteduzero.com : Charte du forum C++ | Wikibooks.org : Tous les idiomes du C++ | Gotw.ca : Les archives des "Guru of the Week" | Crossbowlabs.com : Principes avancés de conception objet | H-deb : Site d'un professeur | Fclc++ : Un forum C++ avancé | Roguewave.com : Documentation C++ | Dinkumware.com : Documentation C++ |
||||||||||||||||||||||
Tealc13
|
# Posté le 20/07/2008 à 18:02:22 | ||||||||||||||||||||||
![]() Groupe : Membres |
Je pense pas qu'il s'arrête. J'ai pas étudié le code mais je l'ai fait tourner jusqu'à des nombres de 450 chiffres !!!
OS : Ubuntu / Windows XP IDE : Code::Blocks 8.02 Editeur : Gedit / Notepad++ 5.0.3 / celui qui me tombe sous la main Navigateur : Firefox 3.0.3 |
||||||||||||||||||||||
Nanoc
|
# Posté le 20/07/2008 à 18:23:19 | ||||||||||||||||||||||
Apprenez à utiliser la STL !!![]() Groupe : Membres |
Il part en boucle infinie. C'est correct. (En tout cas sur cet aspect)
Exercices de C++ pour tous les niveaux ! Mes tutos: Tri de Shell --- [C++] Manipulateurs de flux --- [C++] Notions avancées (suite du cours de M@teo21) |
||||||||||||||||||||||
Chlab_lak
|
# Posté le 20/07/2008 à 18:51:02 | ||||||||||||||||||||||
Tendou : Royaume de dieu![]() Groupe : Membres |
C'est bon, BF envoyé.
Developpez.com : FAQ C++ | Netecolo.com : Une page d'accueil pour la planète terre | Boost.org : La bibliothèque des programmeurs C++ | Siteduzero.com : Charte du forum C++ | Wikibooks.org : Tous les idiomes du C++ | Gotw.ca : Les archives des "Guru of the Week" | Crossbowlabs.com : Principes avancés de conception objet | H-deb : Site d'un professeur | Fclc++ : Un forum C++ avancé | Roguewave.com : Documentation C++ | Dinkumware.com : Documentation C++ |
||||||||||||||||||||||
Tealc13
|
# Posté le 20/07/2008 à 20:15:45 | ||||||||||||||||||||||
![]() Groupe : Membres |
Citation : Nanoc
Il part en boucle infinie. C'est correct. (En tout cas sur cet aspect) Pourquoi, on est sensé trouver une erreur ? Pour moi il fonctionne très bien. OS : Ubuntu / Windows XP IDE : Code::Blocks 8.02 Editeur : Gedit / Notepad++ 5.0.3 / celui qui me tombe sous la main Navigateur : Firefox 3.0.3 |
||||||||||||||||||||||
Retour au forum "Langage C++" ou à la liste des forums
Vous devez être inscrit pour pouvoir poster des messages
Changer de design |
En savoir plus |
Plan du site |
Politique d'accessibilité |
Règles |
RSS tutoriels |
RSS news
Édité par Simple IT SARL :
Nous contacter
| Notre blog | Revue de presse | Publicité
Y'a plus rien à lire, faut remonter maintenant !
Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.
215 Zéros connectés |
6 requêtes |
0.0759s (0.0564s)
