93 lines
2.5 KiB
C++
93 lines
2.5 KiB
C++
/**
|
|
* OPR-Praktikum SS 2012
|
|
* Aufgabe 9
|
|
* @author Thomas Mahr
|
|
*/
|
|
|
|
#include "PrueffolgeAtomkern.h"
|
|
#include "Atomkern.h"
|
|
#include <sstream>
|
|
using namespace std;
|
|
|
|
PrueffolgeAtomkern::PrueffolgeAtomkern()
|
|
{
|
|
anmelden("Atomkern erstellen", &pruefungAtomkernErstellen);
|
|
anmelden("Atomkern ausgeben", &pruefungAusgabe);
|
|
anmelden("Proton", &pruefungProton);
|
|
anmelden("Neutron", &pruefungNeutron);
|
|
anmelden("operator+=", &pruefungOperatorPlusGleich);
|
|
anmelden("operator-=", &pruefungOperatorMinusGleich);
|
|
anmelden("Kernfusion", &pruefungKernfusion);
|
|
anmelden("Kernspaltung", &pruefungKernspaltung);
|
|
}
|
|
|
|
void PrueffolgeAtomkern::pruefungAtomkernErstellen()
|
|
{
|
|
Atomkern kern("Pu",239,94);
|
|
SICHERSTELLEN(kern.symbol()=="Pu");
|
|
SICHERSTELLEN(kern.ordnungszahl()==94);
|
|
SICHERSTELLEN(kern.massenzahl()==239);
|
|
}
|
|
|
|
void PrueffolgeAtomkern::pruefungAusgabe()
|
|
{
|
|
Atomkern kern("C",12,6);
|
|
stringstream s;
|
|
s << "Atomkern = " << kern << ".";
|
|
SICHERSTELLEN(s.str()=="Atomkern = C(12,6).");
|
|
}
|
|
|
|
void PrueffolgeAtomkern::pruefungProton()
|
|
{
|
|
SICHERSTELLEN(Atomkern::PROTON.ordnungszahl()==1);
|
|
SICHERSTELLEN(Atomkern::PROTON.massenzahl()==1);
|
|
}
|
|
|
|
void PrueffolgeAtomkern::pruefungNeutron()
|
|
{
|
|
SICHERSTELLEN(Atomkern::NEUTRON.ordnungszahl()==0);
|
|
SICHERSTELLEN(Atomkern::NEUTRON.massenzahl()==1);
|
|
}
|
|
|
|
void PrueffolgeAtomkern::pruefungOperatorPlusGleich()
|
|
{
|
|
Atomkern kern("C",12,6);
|
|
kern += Atomkern::NEUTRON;
|
|
SICHERSTELLEN(kern.ordnungszahl()==6);
|
|
SICHERSTELLEN(kern.massenzahl()==13);
|
|
kern += Atomkern::PROTON;
|
|
SICHERSTELLEN(kern.ordnungszahl()==7);
|
|
SICHERSTELLEN(kern.massenzahl()==14);
|
|
}
|
|
|
|
void PrueffolgeAtomkern::pruefungOperatorMinusGleich()
|
|
{
|
|
Atomkern kern("C",12,6);
|
|
kern -= Atomkern::NEUTRON;
|
|
SICHERSTELLEN(kern.ordnungszahl()==6);
|
|
SICHERSTELLEN(kern.massenzahl()==11);
|
|
kern -= Atomkern::PROTON;
|
|
SICHERSTELLEN(kern.ordnungszahl()==5);
|
|
SICHERSTELLEN(kern.massenzahl()==10);
|
|
}
|
|
|
|
void PrueffolgeAtomkern::pruefungKernfusion()
|
|
{
|
|
const Atomkern DEUTERIUM("D",2,1);
|
|
const Atomkern TRITIUM("T",3,1);
|
|
const Atomkern HELIUM("He",4,2);
|
|
Atomkern ergebnis = DEUTERIUM + TRITIUM - Atomkern::NEUTRON;
|
|
SICHERSTELLEN(ergebnis.ordnungszahl()==2);
|
|
SICHERSTELLEN(ergebnis.massenzahl()==4);
|
|
SICHERSTELLEN(ergebnis==HELIUM);
|
|
}
|
|
|
|
void PrueffolgeAtomkern::pruefungKernspaltung()
|
|
{
|
|
const Atomkern PLUTONIUM("Pu",239,94);
|
|
const Atomkern BARIUM("Ba",144,56);
|
|
const Atomkern STRONTIUM("Sr",94,38);
|
|
SICHERSTELLEN(PLUTONIUM + Atomkern::NEUTRON == BARIUM + STRONTIUM + 2*Atomkern::NEUTRON);
|
|
}
|
|
|