Distribuição Eletronica de Elementos Químicos em C++

Publicado por suelen carvalho 11/06/2008

[ Hits: 29.351 ]

Homepage: http://suelengc.com.br

Download distribuicao_eletronicav2.cpp




Rotina em C++ que faz a distribuição eletrônica de qualquer elemento da tabela períódica existentes até a data de hoje.

Basta compilar e testar.

Existe um bug ainda não corrigido, quando se pede a distribuição do último elemento da tabela.

  



Esconder código-fonte

//distribuicao_eletronicav2.cpp
/*
  Autor....: Suelen Goularte Carvalho 
  Data.....: 06/11/2007
  Descrição: Realiza a distribuição eletronica de um elemento (tabela de Linus Pauling)
  Entrada..: Inteiro número atômico
  Saída....: Imprime distribuição eletrônica
*/
#include<iostream.h>

using namespace std;

struct Camadas{
    int numCamada;
    char strCamada;
    int NumAtomico;
};

int main(){
    int vCountCamada, vCountSubCamada, vCount, vEletronsUltimaCamada, vQtdeDistribuicao = 0, vNumAtomicoCamada;
    int vNumAtomico;
    int vNumAtomicoFixo;

    cout << "************************************\n";
    cout << "*** Desenvolvido por Suelen G.C. ***\n";
    cout << "***     Data 06/11/2007 00h58    ***\n";
    cout << "*** Distribuicao Eletronica v1.0 ***\n";
    cout << "************************************\n\n\n";

    cout << "Digite o valor do numero atomico: ";
    cin >> vNumAtomico;

    vNumAtomicoFixo = vNumAtomico;

    /* Distribuição eletrônica completa */
    Camadas distribuicao[18] = {{1, 's', 2}, {2, 's', 2}, {2, 'p', 6}, {3, 's', 2}, {3, 'p', 6}, {4, 's', 2}, {3, 'd', 10}, {4, 'p', 6}, {5, 's', 2}, {4, 'd', 10}, {5, 'p', 6}, {6, 's', 2}, {4, 'f', 14}, {5, 'd', 10}, {6, 'p', 6}, {7, 's', 2}, {5, 'f', 14}, {6, 'd', 10}};

    /* encontra o numero de subcamadas por camada */
    for(vCountSubCamada = 0; vCountSubCamada < 18; vCountSubCamada++){
        if((vNumAtomicoFixo-distribuicao[vCountSubCamada].NumAtomico) < 0){
            vEletronsUltimaCamada = vNumAtomicoFixo;
        }
        if( (vNumAtomicoFixo - distribuicao[vCountSubCamada].NumAtomico) >= 0 ){
            vQtdeDistribuicao++;
            vNumAtomicoFixo -= distribuicao[vCountSubCamada].NumAtomico;
        }else{
            if(vNumAtomicoFixo > 0){
                vQtdeDistribuicao++;
            }
            vCountSubCamada = 18;
        }
    }

    /* imprime distribuicao eletrica */
    cout << "\n\nDistribuicao eletronica: \n\n" << endl;
    if(vEletronsUltimaCamada == 0){
        // imprime sem alterar eletron da ultima camada
        for(vCount = 0; vCount < vQtdeDistribuicao; vCount++){
            cout << distribuicao[vCount].numCamada << distribuicao[vCount].strCamada << distribuicao[vCount].NumAtomico << " ";
        }
    }else{
        // imprime sem alterar eletron da ultima camada
        for(vCount = 0; vCount < vQtdeDistribuicao; vCount++){
            if(vCount == (vQtdeDistribuicao-1)){
                cout << distribuicao[vCount].numCamada << distribuicao[vCount].strCamada << vEletronsUltimaCamada;
            }else{
                cout << distribuicao[vCount].numCamada << distribuicao[vCount].strCamada << distribuicao[vCount].NumAtomico << " ";
            }
        }
    }
    
    cout << "\n\n\n";
    return 0;
}

Scripts recomendados

Alocando espaço para uma matriz dinamicamente

Maior ou menor

jogo da cobra em c

Agenda em C

Função para validação de datas


  

Comentários
[1] Comentário enviado por albertguedes em 11/06/2008 - 12:08h

W. Pauli teria adorado seu programa Suelen. : )

[2] Comentário enviado por suelengc em 11/06/2008 - 12:13h

Depois que um amigo me preguntou pra que servia o script, percebi que minha descrição sobre ele era insuficiente para pessoas com pouco conhecimento em Química, então lá vai uma descrição melhor por aqui:

Este script, como diz no seu título, faz a Distribuição Eletrônica em níveis e subníveis de Elementos Químicos. Este conceito é básico em química.

Níveis existentes hoje: K, L, M, N, O, P e Q
Subníveis existentes hoje: s, p, d, f

Cada camada/nível e subcamada/subnível suporta determinada quantidade de elétrons.

Esta distribuição foi elaborada por Linus Pauling - químico quântico e bioquímico - (também criador da penicilina, ou antibiótico), e por isso recebeu o nome de Diagrama de Pauling, mais informações seguem referências abaixo:

http://pt.wikipedia.org/wiki/Diagrama_de_Linus_Pauling
http://pt.wikipedia.org/wiki/Distribui%C3%A7%C3%A3o_eletr%C3%B4nica

Por exemplo:

Elemento químico: Cl (Cloro)
Número atômico: 17
Distribuição Eletrônica: 1s2 2s2 2p6 3s2 3p5

A distribuição eletrônica nos aponta quantas camadas de elétrons tem o elemento, quantos elétrons existem em cada camada, qual a camada de valência do elemento, o grupo do elemento (pelo número de elétrons na última camada), se ele é um elemento eletronicamente estável ou não, se é melhor doador ou receptor dentre outras coisas.

[3] Comentário enviado por albertguedes em 11/06/2008 - 13:39h

Sim, realmente Pauling quem fez a distribuição eletrônica dos atômos, e para não confundir o pessoal Pauling usou o principio de exclusão descoberto por PAULI.
Quer dizer, Wolfgang Pauli descobriu o principio e Linus Pauling o usou.
Interessante essas semelhanças nos nomes não ?
Quanto ao seu programa, dá pra fazer uma generalização para qualquer número atômico se trocar as notações dos orbitais e suborbitais por números e trabalhar em cima, depois é só traduzir esses números pelas letras novamente.
Mas gostei da iniciativa Suelen, como pelo jeito você tem um gostinho pela multidisciplinaridade, vai conseguir usar bem a computação a seu favor.

[4] Comentário enviado por albfneto em 12/06/2008 - 00:00h

Olha ,sou quimico, gostei. mas o seu escript, como todos os outrs aqui do VOL,não consigo baixar ,não, só consigopegar o fonte.
Vou compilar nos meus Sabayon e Gentoo.

[5] Comentário enviado por suelengc em 12/06/2008 - 12:11h

Olá Albneto,

Para executar o script, pode ser feito assim:

- copiar o fonte (já que não é possível fazer o download),
- salvar como distribuicao_eletronicav2.cpp
- compilar e pronto :*), basta executar

ps.: Ainda existe um bug que é no momento de fazer a distribuição eletrônica do ultimo elemento existente hoje da tabela periódica.

Abraços,

[6] Comentário enviado por jhgb em 16/03/2009 - 00:16h

Olá Suelen. Seu programa funcionou na primeira. Bela iniciativa.
Mas cuidado: Pauling não tem nada a ver com a penicilina. Isso foi coisa de Alexander Fleming.
Até mais!


Contribuir com comentário