als Anfänger in Sachen Programmierung in C, habe ich folgendes Anliegen:
Ich habe eine Aufgabe zur Errechnung eines Barcodes bekommen.
(Nein hier mogelt kein Schüler)
Jedoch suche ich nicht nach einer Komplettlösung für diese, sondern lediglich nach einem Teil des codes.
Ich habe eine Zahl: Bsp.: 2245632
Hier soll jetzt abwechselnd mit 3 und 1 multipliziert und anschließend addiert werden.
3*2+1*2+3*4+1*5+3*6+1*3+3*2 = 63
Ich würde das Programm einfach zweimal multiplizieren und einmal addieren lassen, aber ich weiss nicht, wie ich es dazu bringe, jeweils mit der (1,3,5,7) bzw. (2,4,6) Stelle zu multiplizieren.
Hi,
ich würde die Zahlen in ein char[] einlesen und dann in einer for-Schleife mithilfe von Modulo die ungeraden/geraden Zahlen raussuchen.
Die würde ich dann multiplizieren bzw addieren und letztendlich die Zahlen zu einer int Variable addieren.
Lg Knerd
Tricky
Hängt ganz davon ab, wie die Zahl vorliegt.
Ist die Zahl schon als Ganzzahl gespeichert, ist etwas Rechnerei angesagt, um die Zahl wieder in die Dezimalstellen zu zerlegen.
Wird die Zahl erst als Text eingelesen oder liegt als Text vor, kann man sich diese Mühe sparen.
Den Wechsel kann man über einen zusätzlichen Schalter, einen Vergleich oder eine kleinen binären Taschenspielertrick realisieren.
Solche Tricks hat man früher gerne angewandt, wo Speicher und Rechenzeit teuer waren.
int summe = 0;
for (int multiplikator = 3; \*zeichen\_ptr;zeichen\_ptr++,multiplikator ^= 2) summe+= chartodigit(\*zeichen\_ptr)\*multiplikator;
Die Operation multiplikator ^= 2 macht aus 3 eine 1 und umgekehrt, da sie das bit1 kippt.
Bei aktuellen Compilern kann es inzwischen sogar schneller sein, mit Schalter und festen Multiplikatoren zu arbeiten.