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;
}
Alte URL:
/snippet/quersummenberechnung/951
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]
Mit ein wenig Mathematik gehts um den Faktor 100 schneller.
[code]
///
/// /// 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]
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]
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); }
hackman, dein Ansatz ist ledeglich eine rekursive Schreibweise von Günther Foidls iterativer Funktion – oder irre ich mich?
[b]@Nanni[/b]
Daumen Hoch das Komment is echt geil. xD