Moi, il y a un exo que je crains relativement fortement, c'est celui du labyrinthe.
Ben ouais quoi, même après toutes mes tentatives, je n'ai jamais réussis à utiliser un vrai algo style A* ou Dijkstra... Mais un brute-force est envisageable.
Sincèrement, c'est loin d’être le plus dur.
Particulièrement pour une raison que je me tue à répéter : un Dijkstra, ou éventuellement un A*, sûr que c'est cool, mais ce n'est pas nécessaire pour un labyrinthe. Le plus court chemin se trouve facilement avec un parcours en largeur. (au fait, qu'appelle tu un brute-force ? si tu compte rechercher tous les chemins possibles, c'est pas tellement moins dur à coder qu'un Dijkstra )
EDIT : @ schadocalex
Pas mal du tout, moi ça me plait bien.
(Par contre : "La troisième partie sur la SDL est facultative, vu que nous n'en aurons pas besoin cette semaine. " --> Tu comptes éditer la phrase chaque semaine en fonction de si l'exo utilise la SDL ou pas ? Autant faire un truc général. ).
@schadocalex : c'est OK pour moi.
@yoch : zMol, calculateur de masse molaire.
Citation : lucas-84
Titre : [Défis] Cette semaine, zMol, la chimie pour tous !
Sous-titre : Débutants, venez vous entraîner !
zMol, la chimie pour tous !
Introduction
Aujourd'hui l'exercice sera de réaliser un calculateur de masse molaire. Cette notion de chimie n'est abordée qu'en classe de seconde générale, mais vous devriez vous en sortir même si vous êtes au collège, du moment que vous avez une bonne connaissance des molécules et des atomes.
Pour les non-initiés donc, il faut savoir que chaque atome a ce qu'on appelle une masse molaire atomique. Pour faire court, il s'agit de la masse que pèse une mole de cet atome (si vous êtes curieux, vous pouvez en apprendre plus sur les moles ici ! ). Chaque molécule a une masse molaire moléculaire, que l'on obtient en faisant la somme de tous les masses molaires atomiques des atomes qui la composent.
L'unitée de la masse molaire est le <math>\(g.mol^-^1\)</math>.
Consignes
Le but de l'exercice est donc de réaliser un programme qui calcule la masse molaire d'une molécule entrée par l'utilisateur, et ce grâce à un fichier texte contenant certains atomes et leur masse molaire atomique correspondante.
Exemple :
Entrez une molécule :
--> CO2
La masse molaire de cette molécule est 44.0090 g.mol-1
Je vous propose de commencer à travailler avec ce petit fichier texte, il sera amplement suffisant pour faire des tests et pour couvrir un bon nombre de molécules :
<secret>
C 12.011
O 15.999
H 1.0079
He 4.0026
Li 6.941
Cl 35.453
Na 22.989
</secret>
Objectifs
Manipuler la lecture de fichiers.
Apprendre à se servir de quelques fonctions de la bibliothèque standard.
Apprendre (ou approfondir) une nouvelle notion en chimie.
Pistes de réflexion
Reconnaître un atome.
Vous pouvez remarquer que les symboles de certains atomes prennent un caractère et d'autres deux. Quand notre programme aura a analyser l'atome de chlore (Cl), par exemple, il ne faudra pas qu'il l'interprette comme un atome de carbone (C), et un atome l (inconnu au bataillon).
Heureusement, pour nous aider, une règle bien précise est que le deuxième caractère des symboles des atomes est toujours en minuscule, et le premier en majuscule. Pour cela, il va falloir utiliser les fonctions suivantes :
<secret>
int isupper(int c); // Teste si un caractère est majuscule
int islower(int c); // Teste si un caractère est minuscule
/* Ces deux fonctions sont définies dans <ctype.h> */
</secret>
Bien sur, je ne vous donne là que quelques pistes, l'essentiel des recherches sur les problèmes que vous rencontrerez étant à faire par vous même (sinon, ça ne sert à rien).
Enoncé
Niveau 1
Faire un programme qui gère uniquement une liste d'atomes de symbole n'ayant qu'un caractère, écrits les uns à la suite des autres :
<secret>
Entrez une molécule :
--> COO
La masse molaire de cette molécule est 44.0090 g.mol-1
</secret>
Niveau 2
Cette fois, votre programme devra gérer les atomes dont le symbole fait plusieurs caractères.
<secret>
Entrez une molécule :
--> NaCl
La masse molaire de cette molécule est 58.442000 g.mol-1
</secret>
Niveau 3
Votre programme devra gérer les coefficients. Pour tester si un caractère est un chiffre, vous devrez utiliser une fonction de la même famille que isupper et islower (à vous de chercher seul, cette fois ).
La fonction strtol peut aussi vous être utile.
<secret>
Entrez une molécule :
--> CO2
La masse molaire de cette molécule est 44.0090 g.mol-1
</secret>
Niveau 4
Votre programme devra gérer les groupes qui se répètent plusieurs fois.
<secret>
Entrez une molécule :
--> (CH4)2
La masse molaire de cette molécule est 32.085200 g.mol-1
</secret>
Niveau 5
Les scientifiques viennent de découvrir un tout nouvel atome !! Ajoutez à votre programme une fonction qui vous permettra d'ajouter un atome et sa masse molaire dans votre fichier.
Et après... ?
Si vous réalisez les 5 niveaux, vous pouvez encore aller plus loin si vous le souhaitez !
Par exemple, vous pouvez décider d'afficher les étapes intermédiaires du calcul, etc... Votre imagination est votre seule limite !
Bon courage.
Si il y a quelque chose que vous ne comprenez pas, n'hésitez pas à poser votre question sur ce sujet, nous vous répondrons avec plaisir !
(Par contre : "La troisième partie sur la SDL est facultative, vu que nous n'en aurons pas besoin cette semaine. " --> Tu comptes éditer la phrase chaque semaine en fonction de si l'exo utilise la SDL ou pas ? Autant faire un truc général. ).
Genre : "La troisième partie sur la SDL est facultative pour la plupart des exos. "
@ lucas-84:
Ça ne va pas. Une bonne partie de ton intro est plutôt à mettre dans "recensement et informations". Je préfère l'autre formule.
@che -> Je n'ai pas compris le détail que tu n'aimais pas dans "Recensement des défis" ? Le mot Recensement lui-même ?
@tout le monde -> J'ai copié coller pour pas que quelqu'un poste avant que je finisse de tout rédiger, j'ai pas eu le temps de lire attentivement ce que j'avais écrit. Sinon, j'ai copié bêtement, mais c'est pas GuilOooo qui a écrit l'exo et non _Fender_ ?
"If debbugging is the process of removing bugs, then programming must be the process of putting them in." (Edsger Dijkstra)
Exact. Je finis de tout rédiger, et je reposte ici.
EDIT : j'ai eu des gros bugs, je voyais pas mon post, du coup j'ai dû l'écrire deux fois, et mon post avec le début de présentation a disparu (ou je bug encore). Étrange.
"If debbugging is the process of removing bugs, then programming must be the process of putting them in." (Edsger Dijkstra)
Et pour "Recensement des défis" il me semble que tu avais écrit "Recensement des informations", je sais pas si c'est le "information" (à la place éventuelle de "défis") qui a géné @che.
(Je m'en vais pour l'instant parce que là ça fait beaucoup de posts inutiles, on tourne un peu en rond à surcharger ce topic, et je pense pas qu'on puisse avancer beaucoup avant que GuilOooo ne revienne et donne son avis).
-------------------------------------------------------- Titre : [Défis] #1 : zMol, la chimie pour tous. Sous-titre : Venez vous entraîner !
--------------------------------------------------------
Bonjour à tous les zéros,
cette semaine, nous vous proposons de créer zMol, un calculateur de masse molaire. N'ayez pas peur si vous ne savez pas ce que c'est : toutes les notions pré-requises et externes à la programmation seront expliquées.
Si vous souhaitez plus de renseignements sur les défis, rendez vous sur le topic de recensement des défis, vous y trouverez également les principales règles.
zMol, la chimie pour tous
Cet exercice a été écrit par _Fender_, un grand merci à lui !
Introduction
Aujourd'hui l'exercice sera de réaliser un calculateur de masse molaire. Cette notion de chimie n'est abordée qu'en classe de seconde générale, mais vous devriez vous en sortir même si vous êtes au collège, du moment que vous avez une bonne connaissance des molécules et des atomes.
Pour les non-initiés donc, il faut savoir que chaque atome a ce qu'on appelle une masse molaire atomique. Pour faire court, il s'agit de la masse que pèse une mole de cet atome (si vous êtes curieux, vous pouvez en apprendre plus sur les moles ici ! ). Chaque molécule a une masse molaire moléculaire, que l'on obtient en faisant la somme de tous les masses molaires atomiques des atomes qui la composent.
L'unitée de la masse molaire est le <math>\(g.mol^-^1\)</math>.
Consignes
Le but de l'exercice est donc de réaliser un programme qui calcule la masse molaire d'une molécule entrée par l'utilisateur, et ce grâce à un fichier texte contenant certains atomes et leur masse molaire atomique correspondante.
Exemple :
Entrez une molécule :
--> CO2
La masse molaire de cette molécule est 44.0090 g.mol-1
Je vous propose de commencer à travailler avec ce petit fichier texte, il sera amplement suffisant pour faire des tests et pour couvrir un bon nombre de molécules :
<secret>
C 12.011
O 15.999
H 1.0079
He 4.0026
Li 6.941
Cl 35.453
Na 22.989
</secret>
Objectifs
Manipuler la lecture de fichiers.
Apprendre à se servir de quelques fonctions de la bibliothèque standard.
Apprendre (ou approfondir) une nouvelle notion en chimie.
Pistes de réflexion
Reconnaître un atome.
Vous pouvez remarquer que les symboles de certains atomes prennent un caractère et d'autres deux. Quand notre programme aura a analyser l'atome de chlore (Cl), par exemple, il ne faudra pas qu'il l'interprette comme un atome de carbone (C), et un atome l (inconnu au bataillon).
Heureusement, pour nous aider, une règle bien précise est que le deuxième caractère des symboles des atomes est toujours en minuscule, et le premier en majuscule. Pour cela, il va falloir utiliser les fonctions suivantes :
<secret>
int isupper(int c); // Teste si un caractère est majuscule
int islower(int c); // Teste si un caractère est minuscule
/* Ces deux fonctions sont définies dans <ctype.h> */
</secret>
Bien sur, je ne vous donne là que quelques pistes, l'essentiel des recherches sur les problèmes que vous rencontrerez étant à faire par vous même (sinon, ça ne sert à rien).
Enoncé
Niveau 1
Faire un programme qui gère uniquement une liste d'atomes de symbole n'ayant qu'un caractère, écrits les uns à la suite des autres :
<secret>
Entrez une molécule :
--> COO
La masse molaire de cette molécule est 44.0090 g.mol-1
</secret>
Niveau 2
Cette fois, votre programme devra gérer les atomes dont le symbole fait plusieurs caractères.
<secret>
Entrez une molécule :
--> NaCl
La masse molaire de cette molécule est 58.442000 g.mol-1
</secret>
Niveau 3
Votre programme devra gérer les coefficients. Pour tester si un caractère est un chiffre, vous devrez utiliser une fonction de la même famille que isupper et islower (à vous de chercher seul, cette fois ).
La fonction strtol peut aussi vous être utile.
<secret>
Entrez une molécule :
--> CO2
La masse molaire de cette molécule est 44.0090 g.mol-1
</secret>
Niveau 4
Votre programme devra gérer les groupes qui se répètent plusieurs fois.
<secret>
Entrez une molécule :
--> (CH4)2
La masse molaire de cette molécule est 32.085200 g.mol-1
</secret>
Niveau 5
Les scientifiques viennent de découvrir un tout nouvel atome !! Ajoutez à votre programme une fonction qui vous permettra d'ajouter un atome et sa masse molaire dans votre fichier.
Et après... ?
Si vous réalisez les 5 niveaux, vous pouvez encore aller plus loin si vous le souhaitez !
Par exemple, vous pouvez décider d'afficher les étapes intermédiaires du calcul... Votre imagination est votre seule limite !
Bon courage.
Si il y a quelque chose que vous ne comprenez pas, n'hésitez pas à poser votre question sur ce sujet, nous vous répondrons avec plaisir !
-------------------------------------------------------- Titre : [Défis] Recensement et informations
--------------------------------------------------------
Je suis débutant en langage C, quelles notions dois-je maîtriser pour réaliser ces défis ?
Afin de suivre, il est nécessaire d'avoir lu le tutoriel C de M@teo21, au moins les deux premières parties. La troisième partie sur la SDL n'est nécéssaire qu'en cas de défis portant sur la SDL.
Où dois-je poster mon code ?
Vous pouvez poster votre code sur le sujet de l'exercice que vous réalisez, ce n'est que là-bas que l'on pourra vous aider à améliorer votre code.
Je ne supporte la critique et/ou j'ai peur de me ridiculiser en postant mon code !
Pourtant, c'est la seule manière pour vous de progresser. Les commentaires qui vous permettront d'améliorer votre manière de programmer seront constructifs et ne jugeront pas votre personne !
Aide
Les balises codes
N'oubliez pas de mettre votre code entre des balises adaptées. Cela permettra une lecture plus facile de celui-ci.
<codetype="c">/* Votre code ici */</code>
Plus d'informations sur les balises de code :
@GuilOoo est Ok pour le fais que l'on publie un exo par semaine ( dont je pense qu'il est mieux de le publier lundi ) Il ne pourra pas le faire pour quelque jour.
La question maintenant est comment publier les exercices ?
Avec un compte spécialement pour ou on s'organise ici ?
Les 2 solutions semblent avoir des avantages et des inconvénients ...
@_Fender_: En effet, une question de secondes
🍊 - Étudiant - Codeur en C | Zeste de Savoir apprenez avec une communauté | Articles- ♡ Copying is an act of love.
Hum, pourquoi poster avec un nouveau compte créé spécialement pour ? Le posteur de l'exercice peut le faire avec le sien, quel est le problème de ce côté là ?
Ensuite, quelqu'un a été designé par le loup gardien de ce forum pour s'en occuper pendant son absence ou non ?
Je pense qu'il faudrait mettre un lien vers l'ancien topic des exercices (celui-ci) dans le topic de recensement (à la rigueur reprendre le tableau).
Autrement, un compte "normal" n'est-il pas suffisant (peu importe si le posteur change à chaque fois, non ?)
Ouvre une autre sujet, présente ton problème sans supposer qu'on connait le cours par coeur, post ton code à l'aide des balise code </> (au dessus de l'éditeur de texte) et dit nous ou tu bloques.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
🍊 - Étudiant - Codeur en C | Zeste de Savoir apprenez avec une communauté | Articles - ♡ Copying is an act of love.
🍊 - Étudiant - Codeur en C | Zeste de Savoir apprenez avec une communauté | Articles - ♡ Copying is an act of love.
🍊 - Étudiant - Codeur en C | Zeste de Savoir apprenez avec une communauté | Articles - ♡ Copying is an act of love.