Hi Leute hab da mal wieder n kleines Problem. Ich habe 2 Arrays a und b mit folgenden Inhalten: a[1]=1; a[2]=2; a[3]=3; a[4]=8; b[1]=0; b[2]=5; b[3]=7; b[4]=0; also 1238x570=705660; ich würde so vorgehen a[4]*b[1]=c[0]; a[3]*b[1]=c[1]; a[2]*b[1]=c[2]; a[1]*b[1]=c[3]; nur hab ich da ein Problem was mache ich mit dem übertrag? wie würdet ihr vorgehen schöne Grüße Ulf
Vom Zweck der Übung weiß ich jetzt nicht... Aber ansonsten: Genau wie auf dem Papier: Aufschreiben und auf die nächste Stelle addieren.
1 | c[4] = a[4] * b[4]; |
2 | ü = mod(c[4],10); |
3 | c[4] = c[4] - 10*ü; |
4 | |
5 | c[3] = a[3] * b[3] + ü; |
6 | ü = mod(c[3],10); |
7 | c[3] = c[3] - 10*ü; |
8 | |
9 | ...
|
So sähe das in Pseudocode aus.
Ich verstehe gar nicht, warum die Code-Formatierung nicht den Variablennamen "ü" mag. Dabei nenne ich Variablen doch immer "Pröttgenkrügel" oder so.
Nicolas S. wrote: > Vom Zweck der Übung weiß ich jetzt nicht... > > Aber ansonsten: Genau wie auf dem Papier: Aufschreiben und auf die > nächste Stelle addieren. > >
1 | > c[4] = a[4] * b[4]; |
2 | > ü = mod(c[4],10); |
3 | > c[4] = c[4] - 10*ü; |
4 | >
|
5 | > c[3] = a[3] * b[3] + ü; |
6 | > ü = mod(c[3],10); |
7 | > c[3] = c[3] - 10*ü; |
8 | >
|
9 | > ... |
10 | >
|
> > So sähe das in Pseudocode aus. Nicht wirklich, aber fast. Mittels mod (=modulo) kannst du nicht den Übertrag bestimmen. Der Übertrag ist ganz einfach die Zahl durch 10 dividiert. Modulo kommt erst ins Spiel, wenn du den Teil haben willst, der nach Abzug des Übertrags übrig bleibt. @Ulf Und der Modulo Operator ist in C ganz einfach das %. a = 10 % 7; b = 10 / 7; b wird 1, a wird 3. denn: 7 ist in 10 1 mal enthalten und 3 bleiben Rest. Frage: Was ist daher 23 / 10 bzw. 23 % 10 (das erste ist 2, das zweite ist 3. 'Zufällig' wäre in deiner Anwendung der Übertrag bei so einem Zwischenergebnis 2, während die sich zu merkende Stelle 3 wäre :-)
Hi ich hab mir da smal so durch den kopf gehen lassen... mir ist aufgefallen, das ist alles sehr aufwendig z.B. a1=6 a2=7 b1=8 b2=9 d1=a2xb2 | 7*9=63 üd1=d1/10 | 63/10=6 c1=d1%10 | 63%10=3 d2=a1xb2 | 6*9=54 üd2=d2/10 | 54/10=5 c2=d2%10 | 54%10=4 dann müssen noch dir überträge dazuaddiert werden. das macht ne menge aufwand wenn man 2 4stellige zahlen hat =/ gibt es vielleicht eine routine dafür, ich will ja das rad kein 2. mal erfinden danke schon mal
>gibt es vielleicht eine routine dafür, ich will ja das rad kein 2. mal >erfinden Warum hältst du die Zahlen nicht in normalen Variablen? Und machst nur zur LCD/UART Ausgabe eine Wandlung nach ASCII...
Hallo ja wäre mir auch lieber... nur ich bekomme die daten vom UART im ASCII Format. Das ganze soll eine Leistungsanzeige werden. das Laderegler sendet mir die daten in diesem Format. Jetzt muss ich Strom und Spannung multipliezieren und um eine LCD Anzeige ausgeben.
Ulf Cramme wrote: > Hallo ja wäre mir auch lieber... nur ich bekomme die daten vom UART im > ASCII Format. Ja und? Die kann man doch auch nach einer richtigen Zahl wandeln! Die Funktion atoi ist schon lange erfunden. Wie wärs mal mit etwas C-Grundlagenstudium. (Ich dachte bisher, das ganze wäre eine Hausübung! Kein Mensch tut sich heute noch BCD Arithmetik an, wenns nicht unbedingt sein muss weil er praktisch 'unendlich große' Zahlen verarbeiten können muss.)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.