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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }