Feedback

Quersummenberechnung

Sprache: C#

Hier eine kleine Funktion, um Quersummen zu berechnen.
        /// <summary>
        /// Berechnet die Quersumme einer Zahl
        /// </summary>
        /// <param name="Zahl">Die Zahl, aus der die Quersumme berechnet werden soll</param>
        /// <returns></returns>
        private int Quersumme(int iNumber)
        {
            //Zahl in einen String aufteilen
            string strNumbers = iNumber.ToString();
            iNumber = 0;
            List<int> lstParts = new List<int>();

            foreach (char ch in strNumbers)
            {
                lstParts.Add(Convert.ToInt32(ch.ToString()));
            }

            foreach (int i in lstParts)
            {
                iNumber = iNumber + i;
            }

            return iNumber;

        }
        /// <summary>
        /// Berechnet die Quersumme einer Zahl
        /// </summary>
        /// <param name="Zahl">Die Zahl, aus der die Quersumme berechnet werden soll</param>
        /// <returns></returns>
        private int Quersumme(int iNumber)
        {
            //Zahl in einen String aufteilen
            string strNumbers = iNumber.ToString();
            iNumber = 0;
            List<int> lstParts = new List<int>();

            foreach (char ch in strNumbers)
            {
                lstParts.Add(Convert.ToInt32(ch.ToString()));
            }

            foreach (int i in lstParts)
            {
                iNumber = iNumber + i;
            }

            return iNumber;

        }

6 Kommentare

  1. Es geht auch etwas einfacher.
    [code] private int GetQS(int _int)
    {
    int qs = 0;
    foreach ( c in _int.ToString.ToCharArray) {
    qs += Convert.ToInt32(c.ToString);
    }
    return qs;
    }
    [/code]

  2. Mit ein wenig Mathematik gehts um den Faktor 100 schneller.
    [code]
    ///

    /// Berechnet die Prüfsumme von ///

    /// /// Zahl von der die Prüfsumme berechnet werden soll
    ///
    ///
    /// Prüfsumme von ///

    public static int PrüfSumme(int zahl)
    {
    int prüfSumme = 0;

    do
    {
    prüfSumme += zahl % 10;
    zahl /= 10;
    } while (zahl > 0);

    return prüfSumme;
    }
    [/code]

  3. Günther, deine Funktion verwendet den Divisor, der Fließkommazahlen erzeugt. So wird für die Zahl 123456789 die Quersumme 51 anstatt 45 ausgegeben. Bei deiner Methode muss der Ganzzahldivisor “ verwendet werden.
    [code]
    prüfSumme += zahl % 10;
    zahl = 10;
    [/code]

  4. das ist etwas overkill würde ich sagen, so mit liste und string
    wie wärs einfach
    int Quersumme(int i) { return i % 10 + (i > 10 ? Quersumme(i / 10) : 0); }

  5. hackman, dein Ansatz ist ledeglich eine rekursive Schreibweise von Günther Foidls iterativer Funktion – oder irre ich mich?