Esempio n. 1
0
    private string CountingResult(string acid, string metal)
    {
        string acidIon = pattern.TransformToAcidReduceIon(acid);

        if (acid == "H2SiO3")
        {
            return("X");
        }
        else
        {
            if (oxidationDegree1.Contains(metal) && oxidationDegree1.Contains(acidIon) ||
                oxidationDegree2.Contains(metal) && oxidationDegree2.Contains(acidIon) ||
                oxidationDegree3.Contains(metal) && oxidationDegree3.Contains(acidIon))
            {
                return(metal + acidIon);
            }

            if (oxidationDegree2.Contains(metal) && oxidationDegree1.Contains(acidIon))
            {
                if (acidIon == "I" || acidIon == "Cl" || acidIon == "Br" || acidIon == "F")
                {
                    return(metal + acidIon + "2");
                }
                else
                {
                    return(metal + "(" + acidIon + ")2");
                }
            }

            if (oxidationDegree1.Contains(metal) && oxidationDegree2.Contains(acidIon))
            {
                return(metal + "2" + acidIon);
            }

            if (oxidationDegree3.Contains(metal) && oxidationDegree1.Contains(acidIon))
            {
                if (acidIon == "I" || acidIon == "Cl" || acidIon == "Br" || acidIon == "F" || acidIon == "S")
                {
                    return(metal + acidIon + "3");
                }
                else
                {
                    return(metal + "(" + acidIon + ")3");
                }
            }

            if (oxidationDegree1.Contains(metal) && oxidationDegree3.Contains(acidIon))
            {
                return(metal + "3" + acidIon);
            }

            if (oxidationDegree3.Contains(metal) && oxidationDegree2.Contains(acidIon))
            {
                if (acidIon == "I" || acidIon == "Cl" || acidIon == "Br" || acidIon == "F" || acidIon == "S")
                {
                    return(metal + "2" + acidIon + "3");
                }
                else
                {
                    return(metal + "2(" + acidIon + ")3");
                }
            }

            if (oxidationDegree2.Contains(metal) && oxidationDegree3.Contains(acidIon))
            {
                if (acidIon == "I" || acidIon == "Cl" || acidIon == "Br" || acidIon == "F" || acidIon == "S")
                {
                    return(metal + "3" + acidIon + "2");
                }
                else
                {
                    return(metal + "3(" + acidIon + ")2");
                }
            }
            return("X");
        }
    }
    private string CountingResult(string acid, string hydroxide)
    {
        string metalIon, acidReduceIon;

        if (hydroxide.Contains("Fe"))
        {
            if (hydroxide == "Fe(OH)2")
            {
                metalIon      = "Fe";
                acidReduceIon = pattern.TransformToAcidReduceIon(acid);
                if (oxidationDegree1.Contains(acidReduceIon))
                {
                    if (acidReduceIon == "I" || acidReduceIon == "Cl" || acidReduceIon == "Br" || acidReduceIon == "F")
                    {
                        return(metalIon + acidReduceIon + "2");
                    }
                    else
                    {
                        return(metalIon + "(" + acidReduceIon + ")2");
                    }
                }
                if (oxidationDegree2.Contains(acidReduceIon))
                {
                    return(metalIon + acidReduceIon);
                }
                if (oxidationDegree3.Contains(acidReduceIon))
                {
                    if (acidReduceIon == "I" || acidReduceIon == "Cl" || acidReduceIon == "Br" || acidReduceIon == "F" || acidReduceIon == "S")
                    {
                        return(metalIon + "3" + acidReduceIon + "2");
                    }
                    else
                    {
                        return(metalIon + "3(" + acidReduceIon + ")2");
                    }
                }
            }

            if (hydroxide == "Fe(OH)3")
            {
                metalIon      = "Fe";
                acidReduceIon = pattern.TransformToAcidReduceIon(acid);
                if (oxidationDegree1.Contains(acidReduceIon))
                {
                    if (acidReduceIon == "I" || acidReduceIon == "Cl" || acidReduceIon == "Br" || acidReduceIon == "F")
                    {
                        return(metalIon + acidReduceIon + "3");
                    }
                    else
                    {
                        return(metalIon + "(" + acidReduceIon + ")3");
                    }
                }
                if (oxidationDegree2.Contains(acidReduceIon))
                {
                    if (acidReduceIon == "I" || acidReduceIon == "Cl" || acidReduceIon == "Br" || acidReduceIon == "F" || acidReduceIon == "S")
                    {
                        return(metalIon + "2" + acidReduceIon + "3");
                    }
                    else
                    {
                        return(metalIon + "2(" + acidReduceIon + ")3");
                    }
                }
                if (oxidationDegree3.Contains(acidReduceIon))
                {
                    return(metalIon + acidReduceIon);
                }
            }
            return("X");
        }
        else
        {
            metalIon      = pattern.TransformHydroxideToMetalIon(hydroxide);
            acidReduceIon = pattern.TransformToAcidReduceIon(acid);
            return(GettingSubstance(metalIon, acidReduceIon));
        }
    }