
| Page Précédente 1 2 3 ... 34 35 36 37 38 39 Suivante | |||||||||||
| Auteur | Message | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 visiteur sur ce sujet (1 Anonyme) | |||||||||||
| Page Précédente 1 2 3 ... 34 35 36 37 38 39 Suivante | |||||||||||
Nanoc
|
# Posté le 11/05/2009 à 11:34:08 | ||||||||||
Refuseur de tutoriels![]()
|
Reprise du dernier message de la page précédente :
Non. Lis le tuto sur les templates.<minicode type="cpp">std::pair<Polynome, Polynome></code> est équivalent à: Code : C++
Mes tutos : [C++] Notions avancées (suite du tuto de M@teo21) Autres : Exercices de C++ pour tous les niveaux ! --- Mots-clés du C++ |
||||||||||
Pollux568
|
# Posté le 11/05/2009 à 11:41:49 | ||||||||||
|
études : ENS Cachan |
Citation : The Joker
Si je comprend bien, on a qu'à récupérer le contenu des deux fichiers ligne par ligne, et après on les compare : Code : C++
Pour ce qui est de savoir les lignes qui ont été ajoutées/détruites, je pense qu'il faut compter le nombre de lignes dans chacun des deux fichiers : s'ils n'en ont pas le même nombre, c'est qu'il y a des lignes qui ont été ajoutées ou détruites, sinon pas de souci. ![]() C'est plus compliqué que ça. Imagine tu as ces deux fichiers, qui ont le même nombre de lignes : Code : Autre
et Code : Autre
diff va te donner (il est très malin !) : Code : Autre
En clair, 1) Avoir le même nombre de lignes ne prouve rien 2) diff arrive à trouver les déplacements de blocs entiers, une comparaison ligne à ligne n'étant donc pas suffisante. Ma page perso : http://polgm.free.fr |
||||||||||
ero-sennin95
|
# Posté le 12/05/2009 à 12:00:57 | ||||||||||
|
|
je galere un peu sur ce constructeur :
Code : C++
j'ai regarder le cours sur les templates mais ça ne m'avance pas plus. je comprend bien la fonction mais pas le template<size_t N>. |
||||||||||
Nanoc
|
# Posté le 12/05/2009 à 13:01:03 | ||||||||||
Refuseur de tutoriels![]()
|
Oui. Ca n'est pas encore dans le cours. Les chapitres suivant vont arriver prochainement.
Version simplifiée: On peut également donner un nombre comme argument template. C'est ce que j'utilise ici pour la taille d'un tableau. Cela permet d'éviter d'avoir à donner la taille du tableau en second argument. Plus de détails sur la FAQ de developpe.com par exemple. Mes tutos : [C++] Notions avancées (suite du tuto de M@teo21) Autres : Exercices de C++ pour tous les niveaux ! --- Mots-clés du C++ |
||||||||||
lmghs
|
# Posté le 12/05/2009 à 13:43:54 | ||||||||||
|
|
La boucle pouvait d'ailleurs être évitée ici pour écrire directement: ":m_termes(&tab[0], &tab[N])"
|
||||||||||
ero-sennin95
|
# Posté le 12/05/2009 à 14:01:42 | ||||||||||
|
|
Merci.
Édité
le 12/05/2009 à 14:02:04
par ero-sennin95
|
||||||||||
Nanoc
|
# Posté le 12/05/2009 à 15:34:17 | ||||||||||
Refuseur de tutoriels![]()
|
Citation : lmghs
La boucle pouvait d'ailleurs être évitée ici pour écrire directement: ":m_termes(&tab[0], &tab[N])" Tiens, c'est pas souvent qu'on l'utilise ce constructeur là... Merci ! Mes tutos : [C++] Notions avancées (suite du tuto de M@teo21) Autres : Exercices de C++ pour tous les niveaux ! --- Mots-clés du C++ |
||||||||||
Pollux568
|
# Posté le 03/06/2009 à 14:46:21 | ||||||||||
|
études : ENS Cachan |
Pas de réponse pour Diff ?
J'ai pas mal cherché, mais j'ai abandonné devant la complexité... Dès qu'on veut faire quelque chose de plus évolué que la comparaison ligne à ligne, et comparer les blocs entre eux pour trouver la plus longue chaine commune, ça devient galère. Ma page perso : http://polgm.free.fr |
||||||||||
Nanoc
|
# Posté le 03/06/2009 à 20:50:15 | ||||||||||
Refuseur de tutoriels![]()
|
C'est la merveilleuse période des examens... donc la suite arrivera quand j'aurais du temps libre.
Normalement dès lundi. Mes tutos : [C++] Notions avancées (suite du tuto de M@teo21) Autres : Exercices de C++ pour tous les niveaux ! --- Mots-clés du C++ |
||||||||||
Nanoc
|
# Posté le 10/06/2009 à 17:47:27 | ||||||||||
Refuseur de tutoriels![]()
|
Exercice du mois de juin 2009Nom : Figlet ! Sujet : Chaînes de caractères, fichiers, affichage Connaissez-vous Figlet ? C'est certainement le programme le plus utile sous Linux. Il permet d'afficher des messages dans un style "ASCII-art". Code : Console
Ce que je vous propose c'est de réaliser ce petit programme. Il devra remplir le cahier des charges suivant: 1) Récupérer les arguments du main pour la phrase à afficher 2) Utiliser le fichier de police (fourni plus bas) pour lire les lettres nécessaires en ASCII-art 3) Afficher le message en ASCII-art. Si la phrase est trop longue, le programme devra la couper au bon endroit, soit par exemple: Code : Console
avec un découpage au niveau des espaces si il y en a et après un certain nombre de caractère si il n'y en a pas. Vous trouverez les symboles nécessaires à l'affichage dans le fichier police.txt. Il contient une liste de caractères ASCII-art arrangés de la manière suivante: Code : Autre
Chaque ligne de symboles est terminée par un @ et la fin d'un charactère est signifiée par deux @@. Les charactères sont enregistrés dans le fichier police.txt selon l'ordre ASCII habituel du caractères 32 (l' espace) au caractère 126 (le ~). Vous remarquerez que lors de l'affichage de "le" par exemple, il n'y a pas de dédoublement des "|" pour les partis communes des deux lettres et c'est la principale difficulté de cet exercice. Code : Console
Ceci est aussi valide si le caractère commun n'est pas le même, mais proche / et | par exemple. Code : Console
Vous avez jusqu'au 1er juillet pour soumettre vos réponses à Réponse_Exercices. Bonne chance à tous !
Édité
le 11/06/2009 à 00:11:54
par Nanoc
Mes tutos : [C++] Notions avancées (suite du tuto de M@teo21) Autres : Exercices de C++ pour tous les niveaux ! --- Mots-clés du C++ |
||||||||||
Xhtml_boys
|
# Posté le 10/06/2009 à 17:55:45 | ||||||||||
#k3v1n5 faut rever![]()
|
Juste pour signaler une faute dans le titre.
![]() « ficheirs » fo k g diz a tou l'1ternez te ke fmauNeko c eu gran aker Prêcheur d'ArchLinux (déjà 3 personnes converties, dont Eyyub, mon ancien prof de traitement d'image, et d'un ami §) Rootards : la communauté de true 1337 kern3l geek haxx0rz : ArchLinux. |
||||||||||
Nanoc
|
# Posté le 10/06/2009 à 18:17:21 | ||||||||||
Refuseur de tutoriels![]()
|
Merci !
Mes tutos : [C++] Notions avancées (suite du tuto de M@teo21) Autres : Exercices de C++ pour tous les niveaux ! --- Mots-clés du C++ |
||||||||||
Etienne-02
|
# Posté le 10/06/2009 à 21:32:26 | ||||||||||
![]()
Ville : Manicamp |
|||||||||||
BoudBoulMan
|
# Posté le 10/06/2009 à 22:34:49 | ||||||||||
Saucisse transgénique![]()
|
Faut-il également faire en sorte qu'il y ait superpostion même lorsque les caractères qui sont en contacts ne sont pas identiques?
Par exemple, figlet cache les "|" s'il y a un autre caractère. Voici ce qu'il affiche pour la chaîne "AB": Code : Console
Faut-il recopier ce comportement de figlet ou peut-on plutôt afficher: Code : Console
étant donné que \ et | sont des caractères différents et alors n'effectuer cette superposition que si les caractères concordent? Merci. ![]() |
||||||||||
Nanoc
|
# Posté le 11/06/2009 à 00:10:39 | ||||||||||
Refuseur de tutoriels![]()
|
Oui.
Je vais mieux détailler la chose. Mes tutos : [C++] Notions avancées (suite du tuto de M@teo21) Autres : Exercices de C++ pour tous les niveaux ! --- Mots-clés du C++ |
||||||||||
iNaKoll
|
# Posté le 11/06/2009 à 13:05:59 | ||||||||||
Grosso merdo![]()
Ville : Le pecq |
Toujours là dessus, j'ai l'impression que les obliques l'emportent toujours sur les verticales peu importe leur position (caractère droit ou gauche). : )
"La constante de couplage est fonction d'une certaine valeur constante que prend le champ scalaire des dilatations dans le vide quantique." |
||||||||||
Valkea
|
# Posté le 28/06/2009 à 20:09:59 | ||||||||||
![]()
|
Bonjour,
comme je ne vois aucun message qui en fait mention, voici une conclusion que j'ai pu obtenir après quelques essais avec figlet lui même et qui pourrait servir a d'autres (bien que ce soit un peu tard, mais je n'ai pris cet exercice qu'hier...) Il ne s'agit pas d'un simple système de priorité entre les symboles, car certains symboles sont remplacés au moment de la fusions entre deux caractères. Si je tape ".." dans figlet, celui ci me donne la réponse suivante : Code : Console
On constate que le symbole centrale qui est composé a base de ")" et "(" devient un "|". Alors que si ça avait été un simple système de priorité des symboles nous aurions probablement obtenu quelque chose qui ressemble à : Code : Console
C'est d'ailleurs ce que j'obtenais avec mon exercice jusqu'au moment ou j'ai constaté cette subtilité sur figlet lui même... |
||||||||||
Monsieur_JaKy
|
# Posté le 05/08/2009 à 22:59:19 | ||||||||||
JaKy & Rory FTW!![]()
Ville : Bourges |
|||||||||||
Carma001
|
# Posté le 15/08/2009 à 20:21:36 | ||||||||||
Proxima ... What Else ?![]()
Ville : Gémenos |
Pour la fin des vacances, je vous propose, avec l'accord de Nanoc, un petit exercice qui vous occupera peut-être quelques temps.
![]() Exercice du mois d'août 2009Nom : Parseur de fonctions mathématiques Sujet : Chaînes de caractères, algorithme Après les Bigint, Fractions, et autres Polynômes, je vous propose cette fois de réaliser un parseur de fonctions mathématiques. Qu'est ce qu'un parseur ? Dans notre cas, le parseur sera l'algorithme qui permettra de transformer une fonction sous forme de chaîne de caractères en une fonction utilisable où il sera possible d'évaluer la valeur de la fonction pour un point donné. Par exemple, si l'utilisateur entre "2x*(1-3x^2)" et qu'il demande à évaluer la fonction pour x=2, le programme devra lui retourner la valeur -44 (C'est à dire 2*2*(1-3*2^2) )L'exerciceDans tous les cas, le programme devra retourner un réel, de précision suffisante lorsque qu'il y a plusieurs chiffres après la virgule. (float ou double ) Niveau 1Votre programme devra gérer :
PS : Comme me l'a fait remarqué Bad_Wolf, la chaîne a^b^c sera interprétée comme a^(b^c). Je rajoute aussi que la chaîne a^2x*b sera interprétée (a^2)*x*b pour garder la logique de la puissance prioritaire sur la multiplication. Niveau 2Si vous avez les connaissances et l'envie, vous pouvez implémenter plus de choses, par exemple :
Mot de la finJe vous laisse le soin de chercher plus d'informations sur le net, et vous pouvez bien sûr poser des questions aux autres sur ce forum. ![]() Vous pourrez organiser votre code comme vous le voulez. Sous forme de fonction est le plus simple. Exemple : float evaluer(std::string fonction, float x); Mais si le cœur vous en dit, vous pouvez créer une classe Fonction et ajouter des fonctionnalités, comme permettre de connaitre le type de fonction (polynomiale, rationnelle, trigonométrique...), de connaitre son domaine de définition, ou encore, pourquoi pas, de renvoyer la dérivée de cette fonction dans un autre objet Fonction . ![]() Il n'y a pas de date limite, Nanoc décidera d'arrêter l'exercice quand il le voudra. Cependant, je vous demande exceptionnellement de soumettre vos réponses à moi par MP. Bonne chance à tous, et si vous avez des questions, n'hésitez pas !
Édité
le 08/11/2009 à 20:19:54
par Carma001
|
||||||||||
Bad_Wolf
|
# Posté le 15/08/2009 à 20:34:40 | ||||||||||
Allons-y !![]()
études : ENS Lyon |
Bonjour,
Très bonne idée ! Juste quelques petits commentaires histoire que tout le monde se comprenne : — Dans la liste des priorités, ça devrait commencer par les parenthèses et les crochets, puis les puissances, et après */ et +-. Et en général (par convention), on interprète a^b^c comme a^(b^c). — Il y a une différence entre les crochets et les parenthèses ? Si oui j'ai pas bien saisi laquelle. — Pour le hors-domaine (niveau 1), en plus de la division par 0 il ne faut pas oublier les racines carrées de trucs négatifs. Bon courage à tous !
Édité
le 15/08/2009 à 20:37:35
par Bad_Wolf
|
||||||||||
lmghs
|
# Posté le 15/08/2009 à 20:39:07 | ||||||||||
|
|
Quelle méthode ?
- huile de coude ? - sérieuse/pro ? (lex/yacc, ANTLR, boost.spirit, ...) PS: evaluer() copie son argument dans son exemple. |
||||||||||
Carma001
|
# Posté le 15/08/2009 à 20:40:13 | ||||||||||
Proxima ... What Else ?![]()
Ville : Gémenos |
Salut,
Oui effectivement, je n'ai pas mis dans l'ordre, mais je vais le faire ![]() Sinon, il n'y a pas de différences entre crochets et parenthèses, on donne juste a l'utilisateur de choisir ce qu'il veut utiliser (vous pouvez même convertir les crochets en parenthèses avant le début du traitement )Pour la racine carré, oui, je l'ai rajouté juste après avoir posté le message. ![]()
|
||||||||||
Bad_Wolf
|
# Posté le 15/08/2009 à 20:40:45 | ||||||||||
Allons-y !![]()
études : ENS Lyon |
lex/yacc c'est peut-être un peu abusé pour une grammaire aussi simple, non ?
|
||||||||||
lmghs
|
# Posté le 15/08/2009 à 20:44:12 | ||||||||||
|
|
La calculatrice est le premier exo d'utilisation de lex/yacc dans les tutoriaux sur le sujet.
(et en toute honnêteté faire ça à l'huile de coude ne me viendrait jamais à l'idée) |
||||||||||
Bad_Wolf
|
# Posté le 15/08/2009 à 20:48:26 | ||||||||||
Allons-y !![]()
études : ENS Lyon |
Je dis pas le contraire, mais pour avoir codé un parseur dans ce genre là en python (la partie +-*/ et les parenthèses en tout cas) pour me faire la main dans le langage, je peux t'assurer que c'est pas compliqué, et que yacc et lex sont un peu le marteau pilon pour écraser la mouche.
Et puis même si évidemment yacc/lex est une combinaison très utile, tu t'es jamais demandé comment on peux faire ça à la main ? Les outils automatiques c'est sympa, mais l'avoir fait au moins une fois c'est pas mal... |
||||||||||
Hiura
|
# Posté le 15/08/2009 à 20:54:55 | ||||||||||
![]()
études : EPFL |
Citation : lmghs
(et en toute honnêteté faire ça à l'huile de coude ne me viendrait jamais à l'idée) Parce que t'as de l'expérience et de bonnes connaissances.Pour ceux qui ne te connaisse pas, qui ne te croit pas ou autre : j'ai déjà fait un résolveur d'(in)équations de degré quelconque à l'huile de coude. Franchement c'est chiant et débile. ( Bon à l'époque je n'avais même pas entendu parler de grammaire, et encore moins de lex/yacc... Jetez un oeil si vous me croyez pas : http://gmath.servhome.org/documentation/ . C'est une horreur. |
||||||||||
lmghs
|
# Posté le 15/08/2009 à 20:57:36 | ||||||||||
|
|
Je sais très bien comment faire ça à la main, c'est pour cela que je préfère utiliser des outils dédiés. Je suis informaticien de formation et de cœur et donc parfaitement fainéant et allergique au NIH.
Si je pose la question, on ne dirait pas mais il y a une logique derrière, c'est pour que cela soit plus explicite dans l'exo. Qu'attendez-vous ? |
||||||||||
Bad_Wolf
|
# Posté le 15/08/2009 à 21:02:09 | ||||||||||
Allons-y !![]()
études : ENS Lyon |
Ah oui ok, j'avais compris que ton tout premier parseur tu l'avais codé avec lex/yacc... Mais effectivement j'imagine qu'au bout d'un moment coder des parseurs... c'est marrant 5 minutes quoi.
|
||||||||||
Carma001
|
# Posté le 15/08/2009 à 21:49:50 | ||||||||||
Proxima ... What Else ?![]()
Ville : Gémenos |
Non, ici le but est de créer son propre parseur, sans se servir d'outils externes. Je pense en effet, comme vous l'avez dit, que ce n'est pas trop "compliqué".
|
||||||||||
chichiri
|
# Posté le 16/08/2009 à 10:15:06 | ||||||||||
Viva Lasagna![]()
|
Juste une question, je me demande comment gérer la constante pi. Sinon l'exercice a l'air très bien, je m'y lance.
La violence est le dernier refuge de l'incompétence : ménager votre ordi! Un programme ne marche pas.. il fonctionne. Un problème sous Blender, référez-vous au ![]() Sessions photoréalistes du SDZSessions speed modelling du SDZ |
||||||||||
Carma001
|
# Posté le 16/08/2009 à 12:48:41 | ||||||||||
Proxima ... What Else ?![]()
Ville : Gémenos |
En fait, si l'utilisateur tape : 2pi*(5+pi), pi devra être remplacé par sa valeur. (Qui est dispo dans <cmath>
: cmath.pi
)
|
||||||||||
Retour au forum "Langage C++" ou à la liste des forums
Le Site du Zéro vous proposera bientôt de nouveaux cours partant de Zéro dans d'autres domaines que l'informatique !

