Feedback

C# - Quersummenberechnung

Veröffentlicht von am 9/14/2008
(1 Bewertungen)
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;

        }
Abgelegt unter Quersumme, quersumme, Mathemathik, Mathe.

6 Kommentare zum Snippet

Nico schrieb am 9/14/2008:
Es geht auch etwas einfacher.
 private int GetQS(int _int)
{
int qs = 0;
foreach ( c in _int.ToString.ToCharArray) {
qs += Convert.ToInt32(c.ToString);
}
return qs;
}
Günther Foidl schrieb am 9/24/2008:
Mit ein wenig Mathematik gehts um den Faktor 100 schneller.

/// <summary>
/// Berechnet die Prüfsumme von <paramref name="zahl"/>
/// </summary>
/// <param name="zahl">
/// Zahl von der die Prüfsumme berechnet werden soll
/// </param>
/// <returns>
/// Prüfsumme von <paramref name="zahl"/>
/// </returns>
public static int PrüfSumme(int zahl)
{
int prüfSumme = 0;

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

return prüfSumme;
}
Klemens Nanni schrieb am 3/25/2010:
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.

prüfSumme += zahl % 10;
zahl \= 10;
hackman schrieb am 8/9/2010:
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); }
Klemens Nanni schrieb am 8/10/2010:
hackman, dein Ansatz ist ledeglich eine rekursive Schreibweise von Günther Foidls iterativer Funktion - oder irre ich mich?
Firendeath schrieb am 8/10/2010:
@Nanni
Daumen Hoch das Komment is echt geil. xD
 

Logge dich ein, um hier zu kommentieren!