public void Wasser() { // Überprüfe, ob aus den Bestandteilen die chemische Formel generiert werden kann Element wasserstoff = Periodensystem.Instance.FindeNichtmetallNachAtomsymbol("H"); Element sauerstoff = Periodensystem.Instance.FindeNichtmetallNachAtomsymbol("O"); // Füge den Bestandteilen dem Wasser hinzu Atombindung wasser = new Atombindung(); wasser.AddBestandteil(wasserstoff, 2); wasser.AddBestandteil(sauerstoff, 1); // Überprüfe ob identisch Assert.AreEqual("H₂O", wasser.GeneriereChemischeFormelAusBestandteilen()); wasser = new Atombindung("H₂O"); wasser.Bestandteile = wasser.GeneriereBestandteileAusChemischerFormel(); // Erhalte die Moleküle aus den Bestandteilen Molekuel wasserstoffMolekuel = wasser.ErhalteMolekuel(wasserstoff); Molekuel sauerstoffMolekuel = wasser.ErhalteMolekuel(sauerstoff); // Überprüfe ob identisch Assert.AreEqual(2, wasserstoffMolekuel.AnzahlAtomeInMolekuel()); Assert.AreEqual("H", wasserstoffMolekuel.Atombindung.ErhalteElement().Symol); Assert.AreEqual(1, sauerstoffMolekuel.AnzahlAtomeInMolekuel()); Assert.AreEqual("O", sauerstoffMolekuel.Atombindung.ErhalteElement().Symol); }
public void Aluminiumhydroxid() { // Überprüfe, ob aus den Bestandteilen die chemische Formel generiert werden kann Metall aluminium = Periodensystem.Instance.FindeMetallNachAtomsymbol("Al"); // Kreiere die Lauge Lauge aluminiumhydroxid = new Lauge(aluminium); // Überprüfe ob identisch Assert.AreEqual("Al(OH)₃", aluminiumhydroxid.GeneriereChemischeFormelAusBestandteilen()); aluminiumhydroxid = new Lauge("Al(OH)₃"); aluminiumhydroxid.Bestandteile = aluminiumhydroxid.GeneriereBestandteileAusChemischerFormel(); // Erhalte die Moleküle aus den Bestandteilen Molekuel aluminiumMolekuel = aluminiumhydroxid.ErhalteMolekuel(aluminium); Molekuel hydroxidMolekuel = aluminiumhydroxid.ErhalteMolekuel(new Oxid("OH")); Assert.AreEqual(1, aluminiumMolekuel.AnzahlAtomeInMolekuel()); Assert.AreEqual("Al", aluminiumMolekuel.Atombindung.ErhalteElement().Symol); Assert.AreEqual(3, hydroxidMolekuel.Anzahl); Assert.AreEqual("OH", hydroxidMolekuel.Atombindung.ChemischeFormel); }
public string GeneriereNameErsterOrdnung() { List <Molekuel> molekuele = ErhalteAlleMolekuele(); // Sortiere die Liste nach Mtall/Nichtmetall, dann nach Elektronegativitaet molekuele.OrderByDescending(x => x.Atombindung.ErhalteElement() is Metall) .ThenBy(x => Array.IndexOf(SortierungNichtmetalle, x.Atombindung.ErhalteElement()?.Symol)) .ToList(); string name = null; for (int zaehler = 0; zaehler < molekuele.Count; zaehler++) { Molekuel molekuel = molekuele[zaehler]; Element element = molekuel.Atombindung.ErhalteElement(); if (element is Metall) { if (molekuel.AnzahlAtomeInMolekuel() > 1) { name += NomenklaturHelfer.Praefix(molekuel.AnzahlAtomeInMolekuel()) + element.Name; } else { name += element.Name; } } else { // !Ausnahme: Wasserstoff nicht an letzer Stelle if (element.Symol.Equals("H")) { if (zaehler != molekuele.Count - 1) { if (molekuel.AnzahlAtomeInMolekuel() > 1) { name += NomenklaturHelfer.Praefix(molekuel.AnzahlAtomeInMolekuel()) + "hydrogen"; } else { name += "hydrogen"; } continue; } } if (zaehler == 0) { if (molekuel.AnzahlAtomeInMolekuel() > 1) { name += NomenklaturHelfer.Praefix(molekuel.AnzahlAtomeInMolekuel()) + element.Name; } else { name += element.Name; } } else { if (molekuel.AnzahlAtomeInMolekuel() > 1) { name += NomenklaturHelfer.Praefix(molekuel.AnzahlAtomeInMolekuel()) + element.Wurzel + "id"; } else { name += element.Wurzel + "id"; } } } } name = name.ToLower(); name = char.ToUpper(name[0]) + name.Substring(1); return(name); }