"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

PHP - Ziffernsumme berechnen?

n4plike 28.03.2007 - 15:08 2785 6
Posts

n4plike

core i7 Addicted
Registered: Mar 2005
Location: 127.0.0.1
Posts: 997
Hi Leute...

ich verzweifle daran in PHP aus 3 Zahlen beliebiger Länge eine Ziffernsumme zu errechnen..


Code:
while ( $x > 9 ) 
 {
 $x = ($x-10);
 $z++;
 }

aber das geht nur bei 2-stelligen Zahlen....


need help

tia, n4plike

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25422
auf stringbasis (per character) berechnen ist einfacher ;)

n4plike

core i7 Addicted
Registered: Mar 2005
Location: 127.0.0.1
Posts: 997
Zitat von mat
auf stringbasis (per character) berechnen ist einfacher ;)

:confused: .... der smiley sagt alles aus...

charakter definier ich mal als char ...

aber wie soll ich das so machen?

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25422
so:
Code: PHP
function checksum($n)
{
	$nLen    = strlen($n);
	$nResult = 0;

	for ($i=0;$i != $nLen;$i++)
		$nResult += (int) substr($n,$i,1);

	return $nResult;
}

echo "Ziffernsumme: ".checksum(1234);

Geigerzeiger

Addicted
Registered: Jan 2004
Location: anywhere
Posts: 449
Du vergisst beim substr() , dass du die i. Stelle des strings
einen ASCII Code zurückbekommst und du den mit ASCII Wert '1' (musst halt in der ASCII Tabelle nachsehen) subtrahieren musst um auf den tatsächlichen wert zu kommen.

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25422
wen oder wtf meinst du?

wie auch immer, bei substr liegst du falsch:
Zitat
string substr ( string string, int start [, int length] )

smashIt

master of disaster
Avatar
Registered: Feb 2004
Location: OÖ
Posts: 5210
Zitat von n4plike
Code:
while ( $x > 9 ) 
 {
 $x = ($x-10);
 $z++;
 }

ich könnt mich irrn aber wennst aus $x-10 n $x/10 machst berechnest zumindest mal die anzahl der stelln.
für die ziffernzumme (is doch das selbe wie die quersumme, oder?) brauchst aber n modulo-operator

in c (kann sogut wie garnix php-mäßig) sollts dann so aussehn:
Code:
do{
 z=z+(x%10);
 x=(x/10);
}while(x>0)
vorausgesetzt x is ne positive int
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz