Distribuição Eletronica de Elementos Químicos em C++
Publicado por suelen carvalho 11/06/2008
[ Hits: 32.028 ]
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.
//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;
}
MeikeNeime - Programa gerador de nomes aleatórios
Teste de desempenho com números primos em C (corrigido)
HaiDownlodManager - simples programa para baixar arquivos
A produção de áudio e vídeo no Linux e as distribuições dedicadas a esse fim
Criptografando sua Home com Gocryptfs para tristeza do meliante
A Involução do Linux e as Lambanças Desnecessárias desde o seu Lançamento
O Journal no Linux para a guarda e consulta de logs do sistema
A evolução do Linux e as mudanças que se fazem necessárias desde o seu lançamento
Instalar Ubuntu com Btrfs + LUKS de forma fácil
Habilitando "hotcorner" no Ubuntu
Zen Kernel no Arch Linux (instalar e remover)
Como instalar e remover o kernel Liquorix
Fazendo o controle de Xbox 360 USB funcionar no One Piece Pirate Warriors 4 (Arch Linux/Steam)
Continuando meus tópicos anteriores (9)
Executar um programa em Rust (2)
Não consigo publicar screenshots no Viva o Linux [RESOLVIDO] (5)









