jQuery
En savoir plus
Adobe Flex & Flash
En savoir plus
ASP.NET
En savoir plus

Inscris-toi au e-camp "Héberge ton jeu Facebook sur Azure" de Microsoft vendredi 25 mai à 13h30 !
| Page 1 | |||
| Auteur | Message | ||
|---|---|---|---|
| 1 visiteur sur ce sujet (1 Anonyme) | |||
| Page 1 | |||
chenapan47
|
# Posté le 19/05/2010 à 18:21:09 | ||
|
|
Bonjour,
Je suis en première année d'IUT mesures physiques et je suis nouveau sur le site du zéro. J'aurais besoin de quelques pistes pour un programme que j'ai à faire dans le cadre d'un projet informatique. Je ne suis pas très doué dans ce domaine même si je suis censé maîtriser tout ce qui est tableau, pointeurs, etc... Le but de mon projet informatique est que lorsqu'on entre une formule chimique brute ((ou même semi-développée)) d'une molécule, le programme devra renvoyer la masse molaire du composé... Par exemple : On entre C6H12O6 et cela donnera 180 g/mol. J'aimerais avoir quelques indications ou pistes afin de débuter à programmer. J'ai vraiment du mal à voir comment faire... |
||
| Publicité | # Posté le 19/05/2010 à 18:21:09 | ||
|
|
|||
dridri93
|
# Posté le 19/05/2010 à 18:27:37 | ||
|
Programmeur 3D sur PSP et PC
|
Bon, déjà personnellement je verrais l'organisation du programme comme ça :
- Entrée de la formule par l'utilisateur - Lecture de la chaine pour récupérer les "indices" et les éléments chimiques - Multiplication des "indices" avec les éléments correspondants - Addition du tout - Retour de la masse molaire finale Un aperçu de mon moteur de jeux vidéos Un autre aperçu, vu du toit d'un des bâtiments Le 11/01/2012 à 03h03 : ![]() |
||
Marc Mongenet
|
# Posté le 19/05/2010 à 18:52:42 | ||
|
|
Citation : chenapan47
J'aimerais avoir quelques indications ou pistes afin de débuter à programmer. J'ai vraiment du mal à voir comment faire... C'est un intéressant problème, et assez piégeux me semble-t-il... Pour la partie intéressante, je verrais: - int masseMolaire(const char *formule); // retourne la masse de la formule ("H2O") -- int masseAtomesSuivants(const char **curseur_formule); // retourne la masse de "H2", puis "O", avance le pointeur --- int masseAtome(const char **curseur_formule); // retourne la masse de "H", puis "O", avance le pointeur --- int atomeN(const char **curseur_formule); // retourne 2 (pour H2), puis 1 (pour O), avance le pointeur Pour masseAtome, la fonction doit être capable de retourner la masse H dans "H2O", mais celle de Hg dans "HgO", et enfin celle de H dans "HO". Et bien sûr, retourner une masse impossible en cas de lettre ne correspondant à aucun atome. |
||
germino
|
# Posté le 19/05/2010 à 19:19:01 | ||
public programmer<C++>![]()
Ville : St germain laprade |
Je dirai qu'il te faut une structure 'element' qui contient les variables 'char *nom' 'double masseMolaire'.
Citation : Qui-Gon-Jin Ce n'est pas parce que tu parles que tu es intelligent. |
||
tux3
|
# Posté le 19/05/2010 à 19:27:00 | ||
|
Ville : Vendeuvre-du-poitou |
Je dirais qu'il te faut un parseur de formule chimique, une pile pour empiler, une fonction qui récupére les masse atomiques dans un tableau périodique des éléments de Dimitri Ivanovitch Mendeleïev dans un tableau.txt tout en dépilant, des multiplications/additions et un affichage pasque c'est quand même utile.
Voila .
Édité
le 19/05/2010 à 19:35:15
par tux3
|
||
Arthurus
|
# Posté le 19/05/2010 à 19:38:32 | ||
Everyday I'm shuffling![]()
Études : Ensimag |
Citation : Marc Mongenet
Citation : chenapan47 J'aimerais avoir quelques indications ou pistes afin de débuter à programmer. J'ai vraiment du mal à voir comment faire... C'est un intéressant problème, et assez piégeux me semble-t-il... Pour la partie intéressante, je verrais: - int masseMolaire(const char *formule); // retourne la masse de la formule ("H2O") -- int masseAtomesSuivants(const char **curseur_formule); // retourne la masse de "H2", puis "O", avance le pointeur --- int masseAtome(const char **curseur_formule); // retourne la masse de "H", puis "O", avance le pointeur --- int atomeN(const char **curseur_formule); // retourne 2 (pour H2), puis 1 (pour O), avance le pointeur Pour masseAtome, la fonction doit être capable de retourner la masse H dans "H2O", mais celle de Hg dans "HgO", et enfin celle de H dans "HO". Et bien sûr, retourner une masse impossible en cas de lettre ne correspondant à aucun atome. C'est intéressant. On pourrait améliorer ce que tu dis en faisant du pseudo objet en C. Au lieu d'avoir par exemple une fonction qui donne la masse molaire, on la calcule systématiquement lors de la création de la formule (on aurait un champs spécifique à ça dans sa structure, ce qui jouera le rôle d'attribut en langage objet). Sinon : Citation : tux3 un tableau périodique des éléments de Dimitri Ivanovitch Mendeleïev Ça sent la recherche wikipedia à plein fouet On dit le tableau de Mendeleiev, tout comme on dit les équations de Maxwell ( et non pas les équations James Clerk Maxwell).
Édité
le 19/05/2010 à 19:39:13
par Arthurus
|
||
tux3
|
# Posté le 19/05/2010 à 19:41:09 | ||
|
Ville : Vendeuvre-du-poitou |
"Ça sent la recherche wikipedia à plein fouet
"Dans le mile Mais pour la bonne cause, je ne savais pas comment écrire bien mandéléyef ! Citation : Arthurus On dit le tableau de Mendeleïev Fix'd
Édité
le 19/05/2010 à 19:43:44
par tux3
|
||
Arthurus
|
# Posté le 19/05/2010 à 19:47:20 | ||
Everyday I'm shuffling![]()
Études : Ensimag |
|||
chenapan47
|
# Posté le 19/05/2010 à 20:00:57 | ||
|
|
Merci les gars!
Je vais tester tout ça et je vous dirais si j'y arrive... |
||
Lord Casque Noir
|
# Posté le 19/05/2010 à 21:19:42 Message supprimé pour le motif suivant : Message complètement hors sujet. | ||
IATGOF
|
# Posté le 19/05/2010 à 21:48:27 Message supprimé pour le motif suivant : Message complètement hors sujet. | ||
Arthurus
|
# Posté le 19/05/2010 à 21:49:35 Message supprimé pour le motif suivant : Message complètement hors sujet. | ||
Adroneus
|
# Posté le 19/05/2010 à 21:49:38 Message supprimé pour le motif suivant : Message complètement hors sujet. | ||
Lord Casque Noir
|
# Posté le 19/05/2010 à 22:09:56 Message supprimé pour le motif suivant : Message complètement hors sujet. | ||
Adroneus
|
# Posté le 19/05/2010 à 22:30:54 Message supprimé pour le motif suivant : Message complètement hors sujet. | ||
Masado
|
# Posté le 19/05/2010 à 22:38:12 | ||
I'm a noob =)![]()
Ville : Lacanau |
Pour en revenir au problème initial, tu n'as pas de facteurs à gérer ? 6(H2O) par exemple (je donne un exemple bidon mais c'est pour que tu vois ce que je veux dire)
Quand un zéro essaye d'apprendre à d'autres zéro le C++ ... Mon jeu de management de golf en ligne Petit jeu d'échec remixé Modèle complet de GameDesignDocument MEUPORG : La musique des geeks ![]() |
||
Pouet_forever
|
# Posté le 19/05/2010 à 22:41:56 Message supprimé pour le motif suivant : Message complètement hors sujet. | ||
Lord Casque Noir
|
# Posté le 19/05/2010 à 23:17:20 Message supprimé pour le motif suivant : Message complètement hors sujet. | ||
Adroneus
|
# Posté le 19/05/2010 à 23:30:10 Message supprimé pour le motif suivant : Message complètement hors sujet. | ||
Lord Casque Noir
|
# Posté le 19/05/2010 à 23:32:32 Message supprimé pour le motif suivant : Message complètement hors sujet. | ||
GuilOooo
|
# Posté le 20/05/2010 à 11:53:56 | ||
Attention, je mords !![]()
|
Lord Casque Noir, on arrête le troll maintenant.
Si la personne veut faire son projet en C et demande de l'aide en C en postant sur le forum de C, tes remarques sur python n'ont rien à faire ici. Ça n'est tout simplement pas le sujet. Par contre, tu fais dériver la discussion vers un débat stérile, ce qui nuit à chenapan47 bien plus que ça ne l'aide. (EDIT : J'ai nettoyé tout ledit « débat » du topic) Tu gagnes 5% pour faire dériver un topic en troll. Merci de ne pas recommencer. Le sujet est maintenant ouvert à nouveau, mais n'en déviez plus.
Édité
le 20/05/2010 à 12:00:24
par GuilOooo
|
||
henri27
|
# Posté le 20/05/2010 à 13:56:17 | ||
![]()
Ville : Versailles |
Waou, jamais vu autant de censure
Je plussoi l'idée de tux3 Citation : tux3 Je dirais qu'il te faut un parseur de formule chimique, une pile pour empiler, une fonction qui récupére les masse atomiques dans un tableau périodique des éléments de Dimitri Ivanovitch Mendeleïev dans un tableau.txt tout en dépilant, des multiplications/additions et un affichage pasque c'est quand même utile. Voila .Tu peux décomposer une formule en sous formule (j'aime bien l'histoire de la pile même si j'ai un soucis avec les parenthèses...) ex Fe(H2O)6 -> Fe/1 - H2O/6 ............-> Fe/1 - ( H/2 - O/1 )/6 Après tu évalues la masse molaire d'une molécule par la somme pondérée des masses molaires des sous molécules ou, s'il s'agit d'un atome, par sa masse molaire fois le nombre associé. Je propose 2 passage, peut être est ce possible en un (surement) Si qqn a une idée pour l'implémenter... ![]() Edit: Dans une formule, je pense qu'il n'y a pas de facteur devant. Ça peut néanmoins être pratique (si on veut pas faire une multiplication par un scalaire mais sinon à la place de mettre 6(H2O) tu mets (H2O)6
Édité
le 20/05/2010 à 14:00:45
par henri27
|
||
Lord Casque Noir
|
# Posté le 20/05/2010 à 13:57:25 | ||
![]()
|
De rien.
chenapan47, si tu veux le tableau périodique (symboles-masses) sous forme de fichier C que j'avais posté, fais-moi signe. Au fait on ne sait toujours pas si ça doit parser les trucs du genre Fe(H2O)6... - Pourquoi le capitalisme est-il au bord du gouffre ? - Parce qu’il regarde le communisme qui est au fond. Wizard book (web) / Optimise ton apache php mysql / C++ FQA Lite / template<> / The Man / delete new[] / Hardware / PIC16F / eventlet / lxml / Économie / Politique / empêcher le clic droit sur les images / goto linus<linus> / output buffering |
||
henri27
|
# Posté le 20/05/2010 à 14:02:04 | ||
![]()
Ville : Versailles |
J'imagine que ça doit être le cas. Sinon le programme perd une grande partie de son intérêt.
|
||
Lord Casque Noir
|
# Posté le 20/05/2010 à 17:14:02 | ||
![]()
|
Il dit que c'est "dans le cadre d'un projet informatique" donc ce serait intéressant d'avoir l'énoncé exact du machin... cahier des charges tout ça...
D'ailleurs, il est où l'OP ?
Édité
le 20/05/2010 à 17:14:27
par Lord Casque Noir
- Pourquoi le capitalisme est-il au bord du gouffre ? - Parce qu’il regarde le communisme qui est au fond. Wizard book (web) / Optimise ton apache php mysql / C++ FQA Lite / template<> / The Man / delete new[] / Hardware / PIC16F / eventlet / lxml / Économie / Politique / empêcher le clic droit sur les images / goto linus<linus> / output buffering |
||
Alienore
|
# Posté le 21/05/2010 à 12:03:22 | ||
|
Études : Polytech'Lille |
Il s'agit premièrement de décomposer l'entrée. Pour ça, il faut savoir sous quelle forme on peut trouver une formule (surtout pour le semi-développé).
Code : C
Il suffit maintenant de faire la fonction translate qui permet de faire correspondre à chaque symbole sa masse molaire multiplié par le nombre qui suit. Il faut encore gérer les parenthèses mais ne sachant pas exactement de quelle manière elles doivent l'être, je ne l'ai pas fait ici. |
||
Lord Casque Noir
|
# Posté le 23/05/2010 à 12:10:19 | ||
![]()
|
Vu que l'OP est parti, on peut se lâcher.
Donc, voici une solution qui fonctionne. Bien sûr j'ai enlevé tous les commentaires histoire de mettre un peu de piment, mais bon le code est très simple. Code : C
- Pourquoi le capitalisme est-il au bord du gouffre ? - Parce qu’il regarde le communisme qui est au fond. Wizard book (web) / Optimise ton apache php mysql / C++ FQA Lite / template<> / The Man / delete new[] / Hardware / PIC16F / eventlet / lxml / Économie / Politique / empêcher le clic droit sur les images / goto linus<linus> / output buffering |
||
Marc Mongenet
|
# Posté le 24/05/2010 à 22:53:28 | ||
|
|
Citation : Lord Casque Noir
Code : C
Quel rapport avec un Makefile? Un simple cc main.c elements.c et c'est réglé proprement. |
||
Lord Casque Noir
|
# Posté le 25/05/2010 à 01:40:25 | ||
![]()
|
La flemme aussi.
- Pourquoi le capitalisme est-il au bord du gouffre ? - Parce qu’il regarde le communisme qui est au fond. Wizard book (web) / Optimise ton apache php mysql / C++ FQA Lite / template<> / The Man / delete new[] / Hardware / PIC16F / eventlet / lxml / Économie / Politique / empêcher le clic droit sur les images / goto linus<linus> / output buffering |
||
Retour au forum "Langage C" ou à la liste des forums
