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 ... 19 20 21 22 23 24 25 26 27 28 29 Suivante | |||||||||||||||||||
| Auteur | Message | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 visiteur sur ce sujet (1 anonyme) | |||||||||||||||||||
| Page : Précédente 1 2 3 ... 19 20 21 22 23 24 25 26 27 28 29 Suivante | |||||||||||||||||||
Mikechaos
|
# Posté le 20/08/2008 à 16:06:02 | ||||||||||||||||||
Zah![]() Groupe : Membres |
Reprise du dernier message de la page précédente :
Pour l'exemple du :Code : Console
Je ne vois pas d'autre(s) erreur(s) possible (à part son homonyme, ']')... Je voulais donc savoir s'il y avait d'autre(s) erreur(s) qu'on devait signaler? Citation : Einstein Il y a deux choses d'infinies. -L'univers -La bêtise humaine Bien que pour l'univers, rien n'est encore sûr. Citation : Socrate Le premier pas vers la connaissance, c'est d'admettre qu'on ne sait rien |
||||||||||||||||||
Nanoc
|
# Posté le 20/08/2008 à 16:09:16 | ||||||||||||||||||
Apprenez à utiliser la STL !!![]() Groupe : Membres |
ah ! ok ! Je sais pas ...
A toi de voir si le langage permet d'autres erreurs ...<taille=tpetit> mon petit doigt me dit que la solution va bientôt sortir...</taille> 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/08/2008 à 16:14:33 | ||||||||||||||||||
Tendou : Royaume de dieu![]() Groupe : Membres |
Erreur:
---- Au niveau des paramètres du main. ---- De syntaxe dans le code: -------- Pas de code (Pseudo-erreur). -------- '[' ou ']' manquant(s). -------- Un ']' avant son '['. ---- Au niveau des entrées/sorties. Voilà j'en vois pas d'autres. Edit suite au post de Nanoc: Fallait pas que je le dise ?
Édité
le 20/08/2008 à 16:16:38
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++ |
||||||||||||||||||
Mikechaos
|
# Posté le 20/08/2008 à 16:50:30 | ||||||||||||||||||
Zah![]() Groupe : Membres |
Chlab_lak -> Je parlais vraiment du code BF en tant que telle. Donc, les erreurs se résument bien à uniquement au '[' et ']'.
Merci ![]() <édit> mon petit doigt me dit que la solution va bientôt sortir... Et qu'est-ce qui nous dit que ton petit doigt est bien renseigner?
Édité
le 20/08/2008 à 16:51:57
par Mikechaos
Citation : Einstein Il y a deux choses d'infinies. -L'univers -La bêtise humaine Bien que pour l'univers, rien n'est encore sûr. Citation : Socrate Le premier pas vers la connaissance, c'est d'admettre qu'on ne sait rien |
||||||||||||||||||
thesimsone
|
# Posté le 20/08/2008 à 17:18:48 | ||||||||||||||||||
A FOND LES ZEROS!![]() Groupe : Membres |
encore une question: dans ton exemple vu que dans (2*3)*(10+1)*10 les parenthèses de 2*3 ne sont pas nécessaires :
Peut-on mettre autant de parenthèses que l'on veut dans la solution? même si non nécessaires? à oui et aussi : si la réponse demandée est 100 et que l'on a un 100 dans nos 6 nombres peut on considérer ce 100 lui-même comme une reponse où faut il faire une opération genre 100/1 pour que la réponse soit validable?
Édité
le 20/08/2008 à 17:28:53
par thesimsone
|
||||||||||||||||||
Nanoc
|
# Posté le 20/08/2008 à 19:10:50 | ||||||||||||||||||
Apprenez à utiliser la STL !!![]() Groupe : Membres |
Tu peux mettre toutes les parenthèses inutiles que tu veux.
Pour ce qui est du deuxième point, on dira que oui, c'est une réponse. Il faudra cependendant considérer ce tirage comme non-valide pour le niveau 2. 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 20/08/2008 à 19:48:50 | ||||||||||||||||||
|
Groupe : Membres |
et hop !
|
||||||||||||||||||
Nanoc
|
# Posté le 20/08/2008 à 20:00:26 | ||||||||||||||||||
Apprenez à utiliser la STL !!![]() Groupe : Membres |
Solution du deuxième exercice du mois de juillet 2008Bonjour tout le monde ! Il est temps que je dévoile une solution pour le2ème exercice du mois de juillet . Vous avez été 25 (!) à m'envoyer une solution. Ce qui montre que l'exercice a eu beaucoup de succès. La plus part des solutions étaient correctes. Certaines avaient un problème avec les parenthèses imbriquées, le point difficile de l'exercice. D'autres étaient tellement complètes qu'elle ne pouvaient pas entrer dans ce post ! (Surtout qu'il existe un compilateur BF qui "pèse" moins de 200 octets, vous êtes loin du compte.) Lecture du fichierLa première étape du programme consistait à lire le fichier BrainFuck et à stocker son contenu dans une chaîne de caractère. Pourquoi ne pas laisser tout dans le fichier ? La raison est simple. Avec les [], le programme peut très bien sauter "en arrière", ce qui n'est pas pratique si l'on navique dans un fichier. Rien de très compliqué, on copie simplement ligne par ligne dans une std::string. Code : C++
On ne lit pas tant qu'on a pas atteint EOF. La méthode avec le getline est la seule méthode correcte. Mise en place de l'interpréteurA partir de là, il fallait mettre en place les élément importants de l'interpéteur, sa "mémoire vive" et son pointeur. Plusieurs choix sont possibles, personellement, j'ai choisi d'utiliser un std::vector<char> avec comme "pointeur" l'indice de la case. On pouvait tout aussi bien utiliser un tableau standard puisque la taille ne varie pas ou encore une string. Idem pour le "pointeur", on pouvait aussi utiliser un vrai pointeur ou un itérateur de la STL. Dans notre cas, nous avons: Code : C++
Interprétaion du codeLes choses intéressantes commencent ici. Pour interpreter le BF, il fallait parcourir la chaine de caractère d'un bout à l'autre en effectuant l'action associée. Pour ce faire, un switch est sans doute le plus approprié Code : C++
Les parenthèsesC'est sans doute le point le plus difficile de l'exercice. La première chose à faire était certainement de vérifier que l'expression est bien parenthésée. Compter le nombre de parenthèses ouvrantes et fermantes n'était pas suffisant. En effet, on peut écrire des expressions qui ont le bon nombre de paranthèses mais qui ne sont pas correctes. Par exemple: Le problème ensuite était qu'une parenthèse ne renvoit pas forcément à la parenthèse suivante du code source, des parenthèses peuvent êtres imbriquées, comme dans l'expression mathématique Il fallait donc trouver un moyen de repérer à quelle parenthèse sauter. Il y a deux grandes techniques pour faire cela. La première consiste à lire une fois tout le code source et de repérer les couples de parenthèses qui vont ensemble puis stocker les positions des couples dans un tableau. Cette solution n'est viable que si le code source n'est pas trop long. La deuxième est plus complexe mais fonctionnera toujours. Il s'agit d'utiliser une pile. Chaque fois qu'on rencontre une parenthèse ouvrante, on ajoute sa position au sommet de la pile. Lorsqu'on rencontre une parenthèse fermante, on saute à la position se trouvant sur le sommet de la pile et on supprime le sommet de la pile. Ce qui est bien c'est que la STL propose une structure de type pile dans l'entête "stack". Un code completPour le code source complet, je vous propose ce mois le code de MatteX qui a réalisé un programme très complet et utilisant beaucoup la STL. Il a également gérer pas mal d'excpetions et il indique le temps d'exécution du programme. Ce n'est pas forcément très facile quand on débute, mais il y a beaucoup de commentaires et n'hésitez pas à poser des questions si nécessaire. BrainFuck.h Secret (cliquez pour afficher) Code : C++ - BrainFuck.h
BrainFuck.cpp Secret (cliquez pour afficher) Code : C++ - BrainFuck.cpp
main.cpp Secret (cliquez pour afficher) Code : C++ - main.cpp
Une solution plus simpleVoici une solution plus simple, dans le sens où elle fait moins appel à la STL. C'est le code de Masthiks. Secret (cliquez pour afficher) Code : C++
Fichier brainfuck.h Code : C++
Fichier brainfuck.cxx Code : C++
Le code inconnuPour ceux qui n'y serait pas parvenu, le code mystère affichait la suite de Fibonacci. RemarquesQuelques remarques sur les codes reçus :
Bonne continuation à tous !
Édité
le 25/08/2008 à 19:40:21
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) |
||||||||||||||||||
Freedom
|
# Posté le 20/08/2008 à 21:26:06 | ||||||||||||||||||
|
apprenti Groupe : Membres |
Je trouve le code de Mattex extremement long, 300 lignes c'est beaucoup !! Sinon je préfère utiliser un switch comme tu le montre Nanoc qu'un gros if/else if qui n'ameliore pas la lisibilité. Et le code de Mattex tel quel compile pas chez moi, les lignes du genre " trow std::exeption("chaine"); " le compilo aime pas.
Citation : The Who We're not gonna take it Never did and never will YAGNI Architecture logicielle & Développement |
||||||||||||||||||
Bachir ElMagnifico
|
# Posté le 20/08/2008 à 23:01:23 | ||||||||||||||||||
http://info-crea.tuxfamily.org![]() Groupe : Membres |
Citation : nanoc
D'autres étaient tellement complètes qu'elle ne pouvaient pas entrer dans ce post ! (Surtout qu'il existe un compilateur BF qui "pèse" moins de 200 octets, vous êtes loin du compte.) fallait mentionner une taille a ne pas depasser + un temps d'execution max
![]() cherche des partenaires - page de contact. mon tuto sur OgreNewt: partie 1, partie 2, partie 3, partie 4 |
||||||||||||||||||
Mikechaos
|
# Posté le 21/08/2008 à 01:12:36 | ||||||||||||||||||
Zah![]() Groupe : Membres |
C'est vrai que le code est long. Mais il est mieux structurer que le mien (je n'ai absolument pas mis d'effort comme la date de remise était dépassé
)Sinon, j'ai utilisé exactement le code que Nanoc "suggère" dans son "pas-a-pas", à la différence que j'ai utilisé un tableau de char* et un pointeur. C'était un exercice très intéressant! (Encore un!). Sinon, je viens de finir celui des statistiques. Très simple, en effet. Par contre, pour moi (et je suis, à temps perdu, écrivain), un paragraphe = un caractère quelconque, suivit d'un ou plusieurs \n suivit d'un autre caractère. Par exemple : "Allo\n\n \n\nGa!" est pour moi, trois paragraphe. "Allo!\nÇa va?" équivaut à deux paragraphes. De plus, dans les outils que j'utilise normalement, le nombre de caractère total ne compte pas les retour à la ligne. Mais bref, ce sont des détails. Je me lance dans le petit nouveau! Citation : Einstein Il y a deux choses d'infinies. -L'univers -La bêtise humaine Bien que pour l'univers, rien n'est encore sûr. Citation : Socrate Le premier pas vers la connaissance, c'est d'admettre qu'on ne sait rien |
||||||||||||||||||
Gollum
|
# Posté le 21/08/2008 à 10:49:44 | ||||||||||||||||||
![]() Groupe : Membres |
Salut,
Merci je vais voir la réponse pour voir si je comprend. Ce ne serait pas plutôt Suite de Fibonacci ?? et non "la suite de Ficonacci."
|
||||||||||||||||||
Nanoc
|
# Posté le 21/08/2008 à 10:56:11 | ||||||||||||||||||
Apprenez à utiliser la STL !!![]() Groupe : Membres |
@Gollum: Corrigé. Merci.
@Bachir: C'est de l'humour... @Freedom: Pour le switch, je suis entièrement d'accord. Pour le reste, oui il fait 300 lignes, mais elles sont toutes utiles. Le code est documenté, commenté, correct et utilise bien la STL, ce que je voulais mettre en avant ici. Pour ce qui est des exceptions, j'ai corrigé de sorte que ça compile partout. 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) |
||||||||||||||||||
Darkelfe
|
# Posté le 21/08/2008 à 13:18:40 | ||||||||||||||||||
Apprendre tout sur tout !![]() Groupe : Membres |
C'est pas tellement un problème mais j'ai remarqué une "anomalie" dans le code de MatteX.
Le code suivant (qui ne doit pas fonctionner) passe très bien avec le programme de MatteX : Code : Autre
Si on observe le fonctionnement en détail, on voit que le programme se comporte comme si les deuxième ']' et '[' était inversé (il fait la boucle). Mon problème est que je n'arrive pas à modifier correctement la fonction de vérification pour que le programme renvoie une erreur dans ce cas-là. EDIT : Autant pour moi, je n'avais pas compris que lorsque on met "][" il doit se passe quelque chose (la condition d'entrée dans la boucle est inversé).
Édité
le 21/08/2008 à 14:27:05
par Darkelfe
|
||||||||||||||||||
Mikechaos
|
# Posté le 21/08/2008 à 16:45:14 | ||||||||||||||||||
Zah![]() Groupe : Membres |
Citation : Ga
EDIT : Autant pour moi, je n'avais pas compris que lorsque on met "][" il doit se passe quelque chose (la condition d'entrée dans la boucle est inversé). Moi j'ai gérer cela comme une erreur... <édit> Pour le dernier exo : Citation : Règle du jeu (Wikipédia) les nombres de 1 à 10 présents en double exemplaires et les nombres 25, 50, 75 et 100 présents en un seul exemplaire. Faut-il respecter cela?
Édité
le 21/08/2008 à 18:23:54
par Mikechaos
Citation : Einstein Il y a deux choses d'infinies. -L'univers -La bêtise humaine Bien que pour l'univers, rien n'est encore sûr. Citation : Socrate Le premier pas vers la connaissance, c'est d'admettre qu'on ne sait rien |
||||||||||||||||||
Freedom
|
# Posté le 21/08/2008 à 18:44:40 | ||||||||||||||||||
|
apprenti Groupe : Membres |
Citation : Darkelfe
Code : Autre
EDIT : Autant pour moi, je n'avais pas compris que lorsque on met "][" il doit se passe quelque chose (la condition d'entrée dans la boucle est inversé). D'après les régles données par Nanoc (et par Wikipedia) ce code n'est pas viable. Quand l'interpréteur arrive sur le 2° ] il doit pouvoir retourner au [ correspondant, or ici il n'y en as pas, idem pour le 2° [. D'ailleur l'interpréteur de Mattex ne marche pas sur ce code (le programme plante). Citation : The Who We're not gonna take it Never did and never will YAGNI Architecture logicielle & Développement |
||||||||||||||||||
Zebra
|
# Posté le 22/08/2008 à 12:00:02 | ||||||||||||||||||
Quand je pense à Fernande...![]() Groupe : Membres |
Bonjour, pour l'exercice sur les chiffre sur les chiffre, j'arrive à quelque chose pour le premier niveau avec une brute force, mais j'ai l'impression qu'elle se répète beaucoup : je m'explique : elle me trouve toujours la solutions, quand il y en a une, en moins de 4 seconde, mais si il y en a pas, il faut au moins 40s pour qu'elle fasse toute les possibilités...
Sinon, j'ai une question : mon programme gère les parenthèse, mais que su 1 "niveau"... Je m'explique : Il peut facilement faire Code : Console
mais pas Code : Console
Et sinon, mon programme ne fonctionne que si tous les chiffres sont utilisés, et ne gère pas la priorité des opérateurs (à part avec les parenthèse...). Est ce grave par rapport à l'énoncé? (Il faut savoir qu'il donne une solution valable dans 70% des cas...) Merci d'avance!
Un jeu de mot laid qui fait mal aux gens bêtes |
||||||||||||||||||
Nanoc
|
# Posté le 22/08/2008 à 12:11:01 | ||||||||||||||||||
Apprenez à utiliser la STL !!![]() Groupe : Membres |
@ Freedom: En effet. Je n'ai pas été assez sélectif dans mes tests. Je vais corriger le code de MatteX en conséquence quand je rentre chez moi.
@Mikechaos: Non, ca date de l'époque où l'informatique n'existait pas. Et puis ça ne fait que peu de différence. @Zebra: On doit pouvoir faire plus court en brute-force. Pour ce qui est des parenthèses, c'est dommage parce que certains calculs nécessitent une profondeur de 2 (3 ?) parenthèses. C'est peut-être ça qui cause le 70%. Pour ce qui est de la priorité des opérateurs, oui c'est grave, si par exemple ton premier calcul ne donne pas le bon résultat (a+b*c). 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) |
||||||||||||||||||
Dr.Tenma
|
# Posté le 22/08/2008 à 13:12:51 | ||||||||||||||||||
![]() Groupe : Membres |
Me disait bien pourquoi je l'avais pas réussi.....Plein de notions que j'ai jamais vu -___- et qui ne sont pas présente sur le site.....
Quand le chat n'est pas là les souris sont sous morphine |
||||||||||||||||||
Mikechaos
|
# Posté le 22/08/2008 à 17:29:47 | ||||||||||||||||||
Zah![]() Groupe : Membres |
Citation : Dr.Tenma
Me disait bien pourquoi je l'avais pas réussi.....Plein de notions que j'ai jamais vu -___- et qui ne sont pas présente sur le site..... Il y avait moyen de le faire sans ces notions. La seule chose que j'ai utilisé que tu n'as peut-être jamais vu, c'est les stack. Mais il y avait moyen de s'arranger avec les vector, qui sont présents sur le site. Du côté des itérateurs, je ne sais plus s'ils sont présents, mais ils étaient tous remplaçable (par un simple indice, dans le cas de la boucle, et par un pointeur dans le cas des [] imbriqués). Bref, il était très faisable avec les les éléments présents sur le site .
Citation : Einstein Il y a deux choses d'infinies. -L'univers -La bêtise humaine Bien que pour l'univers, rien n'est encore sûr. Citation : Socrate Le premier pas vers la connaissance, c'est d'admettre qu'on ne sait rien |
||||||||||||||||||
Dr.Tenma
|
# Posté le 22/08/2008 à 18:12:08 | ||||||||||||||||||
![]() Groupe : Membres |
Ah alors j'ai pas été cherché comme y faut =/
Quand le chat n'est pas là les souris sont sous morphine |
||||||||||||||||||
Nanoc
|
# Posté le 23/08/2008 à 10:23:14 | ||||||||||||||||||
Apprenez à utiliser la STL !!![]() Groupe : Membres |
J'ai corrigé le code pour qu'il soit correct au niveau des parenthèses. J'ai également mit un switch à la place des if-else.
Au vu des remarques, voulez-vous que je publie une version plus simple du code ? 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) |
||||||||||||||||||
Dr.Tenma
|
# Posté le 23/08/2008 à 11:08:35 | ||||||||||||||||||
![]() Groupe : Membres |
Oui ce serait préférable, du moin pour moi.
Merci Quand le chat n'est pas là les souris sont sous morphine |
||||||||||||||||||
Darkelfe
|
# Posté le 23/08/2008 à 12:17:15 | ||||||||||||||||||
Apprendre tout sur tout !![]() Groupe : Membres |
|||||||||||||||||||
leopard
|
# Posté le 23/08/2008 à 18:00:29 | ||||||||||||||||||
![]() Groupe : Membres |
bijour !
juste une petite idée comme ça .... pourquoi ne pas afficher la difficulté de l'exercice dans le tableau d'affichage de la page1 ? ça pourrait être utile ! peut-être est il dur de juger combien un exercice est difficile mais je pense que ce serait bien, on pourrait organiser un soudage sur une trentaine de personne pour mettre une note sur 10 ..... voila, c'était l'idée à la c** du jour (de leopard) je poste dans la boite à idées ! @++ leoaprd |
||||||||||||||||||
Hertzien'
|
# Posté le 23/08/2008 à 18:23:34 | ||||||||||||||||||
C++, C(encore)++ fort !![]() Groupe : Membres |
|||||||||||||||||||
