Gibt es in GNU bc bzw. im Windows Taschenrechner eine Funktion um die Quersumme zu berechnen?
-
Ich suche für die oben genannten Programme eine Funktion, um die Quersumme berechnen zu lassen.
Man kann das zwar alles einzeln eintippen, aber das ist etwas viel getippe.
-
In bc kann man es doch schnell selber schreiben:
x = 5234 digitsum = 0 while(x > 0) { digitsum += x%10 x /= 10 } print digitsum
-
nimm doch mal einen richtigen "Taschenrechner"

damit geht's:
1234567 crossSumBase: 10. "28"
-
... war an Quersumm gerichtet, nicht an rüdiger
-
rüdiger schrieb:
In bc kann man es doch schnell selber schreiben:
x = 5234 digitsum = 0 while(x > 0) { digitsum += x%10 x /= 10 } print digitsumAlso das funktioniert irgendwie nicht, ich bekomme das hier als Ergebnis heraus:
Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. F:\Home\Administrator>bc -l bc 1.05 Copyright 1991, 1992, 1993, 1994, 1997, 1998 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. x = 5234 digitsum = 0 while(x > 0) { digitsum += x%10 x /= 10 } print digitsum .00000000000000000014 5+2+3+4 14Rauskommen müßte eigentlich 14 und nicht 0.0...14.
@ !rr!rr_.
GNU bc ist ein guter und vor allem sehr schlanker Taschenrechner. Die Startzeit geht ratzfatz und die Möglichkeiten sind ziemlich gut.
-
Quersumm schrieb:
GNU bc ist ein guter und vor allem sehr schlanker Taschenrechner. Die Startzeit geht ratzfatz und die Möglichkeiten sind ziemlich gut.
mag sein, aber das nützt dir ja im Augenblick nicht viel für die Quersummenberechnung.
bei Pharo ist Quersummenberechnung schon eingebaut, deshalb habe ich es erwähnt. z.B. Quersumme von 1000!
1000 factorial crossSumBase: 10. "10539"
-
upgrade vielleicht mal dein bc. Version 1.05 ist von 1998. Bei mir funktioniert der Code mit GNU/bc 1.06.95 (die Version die bei Ubuntu dabei ist).
-
rüdiger schrieb:
upgrade vielleicht mal dein bc. Version 1.05 ist von 1998. Bei mir funktioniert der Code mit GNU/bc 1.06.95 (die Version die bei Ubuntu dabei ist).
Also bei mir gehts auch nicht:
linuzter:~ $ bc -l bc 1.06.95 Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. x = 5234 digitsum = 0 while(x > 0) { digitsum += x%10 x /= 10 } print digitsum .00000000000000000014 linuzter:~ $ bc --version bc 1.06.95 Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc. linuzter:~ $ uname -a Linux myhost 2.6.32-28-generic #55-Ubuntu SMP Mon Jan 10 21:21:01 UTC 2011 i686 GNU/Linux
-
Problem gefunden: lässt man das -l flag weg, dann gehts. Warum das dann auf einmal geht verstehe ich nicht. Arbeitet der Modulus-Operator anders wenn die Genauigkeit (scale) 0 ist, statt den 10 oder was -l da so einstellt?
-
Doku lesen macht schlau, denn da stehts auch tatsächlich drin:
man bc schrieb:
expr % expr
The result of the expression is the "remainder" and it is com‐
puted in the following way. To compute a%b, first a/b is com‐
puted to scale digits. That result is used to compute a-(a/b)*b
to the scale of the maximum of scale+scale(b) and scale(a). If
scale is set to zero and both expressions are integers this
expression is the integer remainder function.