Résultats de 1 à 10 sur 10

Sujet : ecriture d'une formule chimique

  1. #1
    Visiteur MP
    Visiteur MP

    ecriture d'une formule chimique

    Bonjour,
    je dois ecrire une formule chimique genre C2H4 mais avec des éléments qui varient comme C3H5F1 (là j\'invente...) . Je peux avoir une formule constituée de 7 éléments aléatoires.. Comment puis-je faire pour le format? J\'ai déjà essayé avec des if mais c\'est bien trop compliqué...
    ludivine

  2. #2
    Membre MP
    Inscrit
    août 2013
    Messages
    38
    Il suffit de définir une chaine ASCII dans laquelle tu peux placer les caractères que tu veux et envoyer ensuite cette chaine sur l\'imprimante par un format du type 50A1 par exemple.
    Si je n\'ai pas bien répondu à ta question merci de la reformuler.
    Moby

  3. #3
    Visiteur MP
    Visiteur MP
    Bonjour,
    désolée mais je n\'ai fait que 6 mois de fortran et je n\'ai rien compris...en fait je cherche juste un programme ou un logique simple pour pouvoir écrire .. mais si tu peux m\'expliquer ce que veut dire ASCII? sinon je m\'explique mieux: ce que j\'ai sur l\'ordi c\'est CxHyOzNvBrhCltFa mais je ne veux pas les formules de type C2H4O0N0Br0Cl0F0 (le fait qu\'il y ait des zéros)
    voilà si tu peux m\'aider...
    ludivine

  4. #4
    Membre MP
    Inscrit
    août 2013
    Localisation
    12100
    Messages
    687
    Je pense que tu dois dissocier les deux aspects de ton problème:
    - 1) la génération de tes formules en mémoire. Il te faut définir ce que tu cherche à produire et définir l\'algorithme de production. (Je ne comprend pas bien le problème qui est posé)


    -2) la manière de le programmer qui dépend du langage utilisé.

    Les données en mémoire ont diverses représentations:
    Ainsi lorsque tu appuis sur la touche A sur ton clavier, la CPU récupére le nombre 65.
    Ce nombre est codé suivant une norme américaine dite ASCII \'Américan Standard...\'

    Si tu définis ta chaine ASCII ainsi

    CHAR*11 machaine
    DATA machaine/\'H2O NACL O2\'/

    en mémoire, chaque caractère correspond à un octet (8 bits) qui contiennent les nombres successivement: 72 50 79 32 77 65 67 76 32 79 50.
    Si tu imprime Format (1X,11A1) tu retrrouvera H2O NACL O2
    Si tu imprime par Format (1X,11I3) tu retrouvera la liste des nombre 72 50 etc...

    Moby
    moby

  5. #5
    Visiteur MP
    Visiteur MP
    En fait je ne comprends pas tous les termes techniques que tu emploies .... :?:
    Mais c\'est parceque je n\'ai pas encore tout appris du Fortran 90 .

    Je vais tenter de réexpliquer simplement :

    -le programme commence par une question : il demande un chiffre .
    -puis il se sert de ce chiffre pour calculer ( à l\'aide d\'une formule que j\'ai entrée ) un resultat .
    -il vérifie que ce resultat soit possible ( il s\'agit de sortir des molecules ) .
    -il affiche un ou plusieurs resultats à l\'ecran dans une chaine alpha-numerique .

    Et donc c\'est dans cette chaine que je voudrais eliminer les \"0\" ( zeros ) qui sortent du calcul . En fait il faudrait qu\'il n\'y ait rien d\'ecrit à la place des \"0\" .

    La difficulté est que ces \"0\" sont souvent omniprésents dans les resultats et que je ne sais pas comment les enlever ( tu as un exemple de resultat dans un post au dessus ) .

    Je me demandais s\'il existe un moyen de tester le resultat dans chacun de ses caractères et de proceder à l\'elimination des zeros quand il y en a .
    Comme creer une routine qui remplacerait chaque zero par rien ( meme pas un espace ) et qui permettrait aussi d\'enlever au passage la lettre qui se trouve avant le zero ( puisque s\'il y a , par exemple \"C0\" , c\'est qu\'il n\'y a pas de \"C\" , donc il ne faut pas l\'afficher non plus , idem que le zero ) .



    Voilà si tu avais une idée , ça me rendrait pas mal service , vu que là je sèche completement :roll: ....

  6. #6
    Membre MP
    Inscrit
    août 2013
    Messages
    38
    Il faut effectivement que tu apprenne les bases du FORTRAN pour bien comprendre.
    Pour éliminer les zéro d\'une chaine, il suffit de le remplacer par un espace dans la chaine.
    Exemple
    CHAR*15 machaine ! définition de ma chaine de caractères
    CHAR chain(15) !définition d\'un tableau de 15 caractères
    DATA machaine /XXX0YYYYY0ZZZZZ/ ! remplissage de machaine par des caractères
    EQUIVALENCE (chain(1),machaine) !je supperpose le tableau de 15 caractères avec machaine
    DO 110 i=1,15
    IF(chain(i).EQ.\'0\') chain(i)=\' \' ! si je trouve un zéro, je le remplace par un espace
    Après cette boucle, machaine contient:
    XXX YYYYY ZZZZZ
    110 CONTINUE
    J\'espère avoir répondu
    Moby

  7. #7
    Visiteur MP
    Visiteur MP
    Ok merci , c\'est quelque chose comme ça à quoi je pensais . Mais je n\'etais pas sure que ça soit possible .

  8. #8
    Membre MP
    Inscrit
    août 2013
    Localisation
    12100
    Messages
    687
    En relisant ton message, je me suis apperçu que je n\'avait pas bien répondu complètement à la question.
    En effet, tu veux enlever le zéro et le caractère qui le précéde.
    L\'algorithme est légèrement plus compliqué.
    Dans la boucle comme indiqué, il faut enlever le zéro et le remplacer par un espace comme j\'ai fait ci-dessus. Il faut ajouter que le caractère en i-1 est aussi à remplacer par un espace.
    Puis faire une deuxième boucle qui relit caractère par caractère. Lorsqu\'elle trouve le premier espace en n, elle exécute une deuxième boucle imbriquéqui va de n+2 et qui ramène les caractères de la fin de la chaine de deux caractères en avant.
    En fin de chaine, il faut faire entrer deux espaces par la droite.
    En réfléchissant tu doit pouvoir réaliser cette opération sans grande difficultées.
    Moby
    moby

  9. #9
    Visiteur MP
    Visiteur MP
    Merci beaucoup : . J\'ai pu terminer mon projet .

    Je suis partie sur la base d\'un tableau qui permet de verrifier les caractères et tout le reste en a decoulé .
    Merci beaucoup pour ton aide Moby : .

  10. #10
    Membre MP
    Inscrit
    août 2013
    Localisation
    12100
    Messages
    687
    Il n\'y a pas de quoi et à la prochaine fois!
    Moby
    moby

Informations du sujet

Utilisateur(s) parcourant ce sujet

il y a actuellement 1 utilisateur(s) parcourant ce sujet. (0 membre(s) et 1 visiteur(s))

Règles des messages

  • Vous ne pouvez pas créer de sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas importer de fichiers joints
  • Vous ne pouvez pas éditer vos messages
  •  
  • Les BB codes sont Activés
  • Les Smileys sont Activés
  • Le BB code [IMG] est Activé
  • Le code [VIDEO] est Activé
  • Le code HTML est Désactivé
Please disable Adblock!