Wie kann ich in JavaScript die Quersumme berechnen?

5 Antworten

Die ist schon klar, wozu "while" dient?

while (true) {
    if (x == 0) {
      break;
    }

muss lauten:

while (x!=0){

Dass Du nach dem Teilen die Bruchteile abschneiden musst, weißt Du ja bereits.

Übrigens ist in den meisten Fällen ein "for" ebenso gut geeignet:

for (zahl=x; zahl > 0; zahl = Math.trunc(zahl/10))
{
    resn += zahl % 10;
}

Paul345665 
Beitragsersteller
 11.09.2018, 19:03

Größtenteils inkorrekt, aber Danke für die Antwort.

0

DieDivision ist keine Ganzzahldivision, von daher ist das Ergebnis nicht verwunderlich.

residue=x%10
resn+=residue
x=(x-residue)/10

Wäre eine Möglichkeit dem Problem zu begegnen. Eine andere wäre nach der Division die Nachkommastellen abzuschneiden (Math.trunc).


Paul345665 
Beitragsersteller
 31.08.2018, 17:28

Danke. Jedoch besteht das Problem bei einigen Zahlen auch dann noch, da sie mehr als "1" zu groß sind... (letztere)

0
KarlRanseierIII  31.08.2018, 17:30
@Paul345665

Wie meinen?

Beispiel 737

residue=7 (hinterste Stelle)

7 wird zu resn (quersumme, wieso eigentlich resn?) addiert

x=(737-7)/10 -> ergibt 73

0
Paul345665 
Beitragsersteller
 31.08.2018, 17:31
@KarlRanseierIII

Letzteren der beiden Vorschläge. "resn" habe ich gewählt, da res bereits in Verwendung war.

0
KarlRanseierIII  31.08.2018, 17:44
@Paul345665

Achso, ja, nein, das truncate muß natürlich immer sofort nach der Division ausgeführt werden, also in jedem Schleifenzyklus - nur dann kann es klappen.

Du solltest idealerweise auch noch prüfen, daß die übergebene Zahl wirdklich ein Int ist, bevor Du mit der Arbeit loslegst.

0

du musst die eingaben in einer schleife über eine variable addieren und eine 2. variable fungiert als zähler, bei jeder schleife erhöhst du den Zähler um eins. dann dividierst du var1 durch var2

mit ES6

let querSumme = zahlen => String(zahlen).split("").map(Number).reduce(plus,0);

let plus = (a,b) => a+b;

console.log(querSumme(1234)); //10

Verarbeite es als String:

<script>
z = prompt("Zahl").toString();
quersumme = 0;
for(i = 1; i < z.length; i++) {
    quersumme += parseInt(z.substr(i,1));
   }
alert(quersumme)
</script>

Alex