Wie kann man den Einer/Zehner/Hunderter einer Zahl berechnen?

5 Antworten

In der Tat. Mithilfe von Modulo.

Bei Modulo handelt es sich um eine Funktion bzw. einen Operator (je nach implementierung), die bzw. der den Rest einer Ganzzahldivision (gibt zwar auch Varianten mit Nachkommastellen, aber die sind hierfür nicht relevant) zurückgibt.

Beispiel mit 123:

Einer: modulo(123;10) = 3
Zehner: modulo(123/10;10) = 2
Hunderter: modulo(123/100;10) = 1

Falls die verfügbare Modulo-Implementierung allerdings mit Nachkommastellen arbeitet, benötigen wir noch eine Funktion zum "Abschneiden" von Nachkommastellen. Diese nennen wir der Einfachheit halber int.

Alles zusammen ergibt also für eine Zahl n für die Stelle p (von rechts mit 0 beginnend durchnummeriert) folgende Formel:

modulo(int(n/(10^p));10)

Der Reihe nach:

  1. 10^p ergibt 1 für p=0, 10 für p=1, usw. (p=0: Einer, p=1: Zehner, usw.)
  2. n/(10^p) verschiebt also das Komma um p Stellen nach links.
  3. int(n/(10^p)) schneidet alles hinter dem Komma ab. (aus 1,2 wird 1; aus 2,6 wird 2; usw.)
  4. Nun noch mit Modulo den Rest der Division durch 10 ermitteln, im Dezimalsystem ist das immer die Einerstelle. Da wir allerdings zuvor das Komma verschoben und alles dahinterliegende abgeschnitten haben, hat sich z.B. die Zehnerstelle an diese Position verschoben und wird entsprechend als Ergebnis ausgegeben.

Okay, hab grad in nem Kommentar gelesen, dass es um irgendwas im Bereich programmieren geht, in dem Fall hier ein paar Beispiele:

C:

#include <math.h>
#include <stdio.h>
int main(int argc, char *argv[]){
    int zahl = 123;
    int stellenwert;
    int hoechste_stelle = (int)ceil(log(zahl)/log(10));
    for(int stelle = 0; stelle < hoechste_stelle; ++stelle){
        stellenwert = (int)(zahl / pow(10,stelle)) % 10;
        printf("Stelle: %d ; Wert: %d\n", stelle, stellenwert);
    }
    return 0;
}

Python:

import math
zahl = 123
hoechste_stelle = int(math.ceil(math.log(zahl)/math.log(10)))
for stelle in range(hoechste_stelle):
    stellenwert = int(zahl / 10**stelle) % 10
    print('Stelle: {0} ; Wert: {1}'.format(stelle, stellenwert))
1

Was genau meinst du mit berechnen? In welcher Aufgabe? Plus, Minus, Mal, Geteilt?

Es gibt für diese 4 schriftliche Rechenverfahren mit denen man jeweils Einer, Zehner und Hunderter einzeln ausrechnet, mit algorithmischen Verfahren.

Die Frage müsst präziser gestellt werden.

ja genau solche algorithmischen Verfahren brauche ich sorry!

0
@JohnSchritzig

Dann gibt doch einfach mal bei Google ein :

Schriftliches Addieren ( für Plus)

Schriftliches Subtrahieren (für minus)

Schriftliches Multiplizieren ( für Mal)

Schriftliches Dividieren ( für Geteilt)

Da wirst du dann auf jede Menge Grundschulseiten kommen, die das an einfachen Beispielen erklären :) So schwer ist das nicht.

0

Wahrscheinlich suchst du nach einer Berechnung bei Linearen Gleichungssystemen.

So etwas vielleicht?

Die Ziffern einer dreistelligen Zahl haben die Quersumme 13. Die zweite Ziffer ist viermal so groß wie die erste; die dritte ist das Doppelte der zweiten.

Anmerkung: der Aufbau einer dreistelligen Zahl ist 100a + 10b + c

Erster Satz ergibt:       a + b + c = 13
2. Satz:                          b = 4a   
3. Satz:                         c  = 2b

Alles in den 1. Satz:   a + 4a + 2b = 13  Das reicht nicht.
b auch noch ersetzen:   a + 4a + 8a = 13
                              13a   = 13  | :13
                                a   = 1
Aus den anderen beiden Sätzen bekommt man ganz leicht:
                                b   = 4
                                c   = 8      

So kommt die Zahl 148 zustande. Und die erfüllt die Bedingungen der Aufgabe.
Du kannst gern noch nachfragen.

Was möchtest Du wissen?