IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Couches K L M


Sujet :

Algorithmes et structures de données

  1. #1
    Membre éclairé Avatar de _SamSoft_
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    798
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 798
    Par défaut Couches K L M
    J'ai fais un petit truc comme cela, (seul, il m'a fallut 4 heures) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    0) Déclarer la valeur de Z (numéro atomique)
    1) Si Z < 0 et Z > 28 alors : "Erreur"
    2) Sinon si Z >= 0 et Z =< 2 alors :
    3) K = Z -> Fin du programme
    4) Sinon si Z >= 2 et Z =< 8 alors :
    5) K = 2 et L = Z - 2
    6) Sinon si Z >= 8 et Z =< 18 alors :
    7) Si Z =< 10 alors :
    8) K = 2 et L = Z - 2
    9) Sinon si Z >= 10 alors :
    10) K = 2, L = 8 et M = Z - (K + L)
    11) Fin du programme
    Je voudrais l'améliorer, ne pas me limitter à ces 3 couches et peut-être l'automatiser ?

  2. #2
    Membre Expert Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Par défaut
    géé?

  3. #3
    Membre éclairé Avatar de _SamSoft_
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    798
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 798
    Par défaut
    ? , qu'est ce qui ne va pas ?

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 555
    Par défaut
    déjà ton code est bizarre
    Si Z = 2 faudrait-il K = Z ou K = 2 et L = Z-2
    Tu fais un tset <=2 puis >=2, il devrait déjà y en avoir un qui est strict
    OK çà amrche car je pense que tu veux le cas Z = 2 mais si tu voulais l'autre, tu n'y rentrerais jamais

    Pour l'automatiser, il faudrait avoir la règle précise...avec la règle, je pense queje pourrais aussi sans doute optimiser ton code car y a des trucs qui me paraissent bizarre

  5. #5
    Membre éclairé Avatar de _SamSoft_
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    798
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 798
    Par défaut
    testez mon "code", vous verrez il fonctionne mais pour Z >=0 et Z =< 28

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 555
    Par défaut
    Bien sur qu'il fonctionne mais on peut l'arranger je pense

    Quelle est al règle si tu veux l'automatiser pour plusieurs couches ???

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 555
    Par défaut
    Par exemple, le code ci-dessous marche très bien aussi et est plus clair et plus simple

    0) Déclarer la valeur de Z (numéro atomique)
    1) Si Z < 0 et Z > 28 alors : "Erreur"
    2) Sinon
    3) Si Z >= 0 et Z =< 2 alors :
    3) K = Z -> Fin du programme
    4) Sinon
    5) Si Z > 2 et Z =< 18 alors :
    6) K = 2
    7) Si Z =< 10 alors:
    8) L = Z - 2
    9) Sinon
    10) L = 8 et M = Z - (K + L)
    11) Fin du programme

    Un ptit conseil essaie d'incrémenter c'est plus clair pour sy' retrouver dans lesconditions

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 555
    Par défaut
    je crois me rappeler des mescours de chimie
    La couche K sature à 2
    La couche L à 8
    La M à ....
    etc....

    Ce qu'il faudrait c'est me fournir la limite pour chaque classe et je te ferais un algo pour que cela fonctionne..........
    L'algo est très simple à mettre en place
    Ca te dérange si je file du code fais sous VBA ou tu le voudrais en autre chose ????

    Sinon je te ferais du pseudo code

  9. #9
    Membre éclairé Avatar de _SamSoft_
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    798
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 798
    Par défaut
    Merci :

    K = 2
    L = 8
    M = 18
    Le reste on a pas encore vu, soit un code en C soit un pseudo code, peu importe je convertirai !

    Merci,

  10. #10
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 555
    Par défaut
    C'est du simple VBA

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    'Declaration de ton nombre de couche K L M ==> 3 couches
    Const taille As Integer = 3
     
    Sub test()
    Dim tabCouches(0 To taille - 1), tabCouchesStockage(0 To taille - 1) As Integer
     
    'Initialise tes plafonds par  couches
    tabCouches(0) = 2
    tabCouches(1) = 8
    tabCouches(2) = 18
     
    Dim nbre As Integer
    Dim i, val As Integer
    i = 0
     
    'Nombre d'électrons que tu veux ranger dans les différentes couches
    val = 10
     
    'Boucle sur tes différentes couches
    While i <= taille - 1
        'Si nombre de couche <= au nbre total alors on stocke le max et  on      diminue le nombre d'éelctrions à stocker
        If (tabCouches(i) <= val) Then
            tabCouchesStockage(i) = tabCouches(i)
            val = val - tabCouches(i)
        Else
           tabCouchesStockage(i) = val
           i = taille + 1
        End If
        i = i + 1
    Wend
     
    'Ce bout de code permet juste
    'Si tu veux tester, tu mets tout ce bloc dans une macro VBA sous Excel et tu l'éexécutes en changeant à taguise lesdonénes et tu verras que çà amrche
    Dim str As String
    i = 0
    str = ""
    While i <= taille - 1
        str = str & " _ " & tabCouchesStockage(i)
        i = i + 1
    Wend
     
    'Affichage des électrons rangés + les éleectrons qui reste
    MsgBox str & "_" & val  & " restants
     
    End Sub

  11. #11
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 555
    Par défaut
    Je te laisse faire la conversion en C, çà fait longtemps que je n'en ai pas fait et g rien pour tester sous la main

    Bon courage

  12. #12
    Membre éclairé Avatar de _SamSoft_
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    798
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 798
    Par défaut
    A tout hasardn vous ne pouvez pas me le faire en pseudo code (c'est déjà vraiment sympathique de me le faire en VBA, mais le pseudo code est plus facil à modifier pour n'importe quel langage) ?

    Merci encore,

  13. #13
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 555
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    Declarer une variables Constantes TAILLE
    Declarer 2 tableaux tabCouches et tabCouchesStockage dont les indices voint de 0 à TAILLE - 1 ==> Tableau de TAILLE cases
    Initialiser les cases de tabCouches avec les plafonds des couches
    Declarer le VAL qui sera le nombre d'électrons à ranger
    Initialiser VAL
     
    Boucler de i=0 à i <= TAILLE - 1 sur le tableau tabCouches
    	Si tabCouches(i) <= VAL Alors
    		TabCouchesStockage(i) = tabCouches(i)
    		VAL = VAL - tabCouches(i)
    	Sinon
    		tabCouchesStockage(i) = VAL
    		Sortir de la boucle en faisan i = TAILLE + 1 par exemple
    	Fin Si
     
    	i = i + 1
     
    Fin Boucle
     
    Déclaration chaine de caractere STR
     
    Boucler de i=0 à i <= TAILLE - 1 sur le tableau tabCouchesStockage (pour afficher lesvaleurs des différents couches)
     	Concatener STR avec tabCouchesStockages(i)
    	i =i + 1
    Fin Boucle
     
    Afficher STR en y concatenant VAL pour avoir le reste des électrons qui n'ont pas pû être rangé

  14. #14
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    • 0) Déclarer la valeur de Z (numéro atomique)
    • 1) si Z > 28 ou Z <= 0 ERREUR
    • 2) Sinon si Z > 10 alors N=3 avec (Z - 8 - 2)/2 paires et (Z - 2*((Z-8-2)/2)) electron libre
    • 3) Sinon si Z > 2 alors N = 2 avec (Z -2)/2 paires et (Z - 2*((Z-2)/2)) électron libre
    • 4) Sinon N = 1 avec Z/2 paire et (Z-2*(Z/2)) électron libre

  15. #15
    Membre éclairé Avatar de _SamSoft_
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    798
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 798
    Par défaut
    merci je vais voir ca plus tard, je doit partir,

    merci encore !

  16. #16
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 555
    Par défaut
    Ton code ne répond pas à la question SOuviron

    le but était de faire en sorte que quelque soit le nombre d'léectrons et le nombre de couches avec des limites paramétrables, le rangement de ceux-ci puissent fonctionner tout le temps

    Je ne pense aps qu'avaec ton code tu puissesparamétrer facilement une 4 ime couche si ce n'est enrajoutant une ligne
    Et sil y a 30 cuches?? tu vas bien t'amuser

  17. #17
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par helios77
    Ton code ne répond pas à la question SOuviron

    le but était de faire en sorte que quelque soit le nombre d'léectrons et le nombre de couches avec des limites paramétrables, le rangement de ceux-ci puissent fonctionner tout le temps

    Je ne pense aps qu'avaec ton code tu puissesparamétrer facilement une 4 ime couche si ce n'est enrajoutant une ligne
    Et sil y a 30 cuches?? tu vas bien t'amuser
    je donnais l'algo...

    Pour le reste, bien sûr que c'est un tableau, comme indiqué plus haut...

    Je disais juste si tu pars par en haut c'est beaucoup plus simple...
    Exemple de code en C :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    int    MaxCouches[]={2,8,18,...};
    int    N, Z=0, i, ZMax=0 ;
     
    for ( i = 0 ; i < ... ; i++ )
        ZMax = ZMax + MaxCouches[i] ;
     
    while ( (Z <= 0) || (Z > ZMax) )
    {
      fprintf (stderr, "Entrez le numéro atomique : ");
      scanf ("%d", &Z ); 
    }
     
    N=0;
    i = -1 ;
    while ( N < Z )
    {
       i = i + 1 ;
       N = N + MaxCouches[i] ;
    }
     
    N = N - MaxCouches[i] ;
     
    fprintf ( stderr, " Il y a %d couches avec %d paires et %d electron libre",
               i, (Z-N)/2, (Z - (2*((Z-N)/2))) );

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. vues - Couches de déconnexion ???
    Par gilux dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 27/07/2004, 10h41
  2. [Persistance] Conseil cette couche ?
    Par Alec6 dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 16/06/2004, 11h21
  3. couche entre partie applicative et donnée
    Par crossbow dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 14/06/2004, 15h54
  4. Combiner plusieurs textures avec couches alpha
    Par TibobiT dans le forum OpenGL
    Réponses: 2
    Dernier message: 01/05/2004, 15h20
  5. programmation reseau - couche 2 du modele osi
    Par sahor dans le forum C++Builder
    Réponses: 3
    Dernier message: 06/11/2002, 18h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo