C++ -> Benötige 2 Formeln

Hidden Evil

Moderator
Teammitglied
Hi,

Ich bräuchte mal eine Formel, mit der ich aus einer zweistelligen Zahl die beiden einzelnen Zahlen herrausfiltern, und in 2 extra Variablen speichern kann.

also z.b.

variable1=45

dementsprechend soll variable2 = 4 ergeben und varrable3 = 5

---

die andere müsste aus einer VIERSTELLIGEN zahl (also Jahreszahl) die einzelnen Zahlen rausfiltern.



ich grübel schon den ganzen Tag über diese Formeln, aber ich komme einfach nicht drauf :( Wär echt super, wenn mir da jemand weiterhelfen könnte. :)
 
Zuletzt bearbeitet:
Kann doch nicht so schwer sein - benutze die Modulo-Funktion oder dividiere ganzzahlig durch 10, 100, 1000 usw.
 
Original geschrieben von Wolfi
dividiere ganzzahlig durch 10, 100, 1000 usw.

darauf bin ich schon gekommen, aaaaber: wie diviere ich ganzzählig durch eine zahl?

ich würde nicht fragen, wenn ich nicht verzweifelt wäre :(
 
Geht's euch noch? :D
Die Zahl in einen String umwandeln (VisualBasic, es gibt sicher Ähnliches auch in anderen Sprachen):

A$ = Trim(Str(45))
a = Val(Left(A$,1))
b = Val(Right(A$,1))

bei Jahreszahlen kommt noch die mid-Funktion dazu und fertig....

#Edit Jahreszahlen:

1967
A$ = Trim(Str(1967))
a = Val(Left(A$, 1))
b = Val(Mid(A$, 2, 1))
c = Val(Mid(A$, 3, 1))
d = Val(Right(A$, 1))
 
Zuletzt bearbeitet:
Original geschrieben von Wolfi
In welcher Programmiersprache ?

in C++ , hatte ich eigentlich oben angegeben, is aber verschwunden :(


@LT: wenn ich wüsste, wie ich ne zahl in nen String umwandel, wäre ich schon verdammt glücklich ;) weißt du da was für C++ ?
 
Little

Universel würde ich die Zahl nehmen als String, die Länge feststellen, ein Array mit der größe dieser Länge festlegen und den String (=Zahl) mit der MID$ Funktion und einem Zähler zerlegen ;)

Aber wenn es nur zweistellige Tahlen sind, ist MODulo der beste und schnellste Weg

Zehner = Zahl MODULO 10
Einer = Zahl - (ZAHL modulo 10)

:D

bei einer drei-stelligen ähnlich:

hunderter = zahl mod 100
rest = zahl - 100* hunderter
zehner= rest mod 10
einer = rest - 10*zehner
 
um ehrlich zu sein, ich peil's nicht :cry:

ich habe mal folgenden Code geschrieben:

Code:
#include<iostream.h>
#include<conio.h>


void main ()
{

int Zahl,Zehner,Einer;

cin>>Zahl;

Zehner = Zahl MODULO 10
Einer = Zahl - (Zahl modulo 10)

cout<<Zehner<<" "<<Einer;

getch();

}

aber zwichen MODULO und 10 will er n Semikolon haben, aber das führt zu garnix, außer nochmehr meldungen :(
 
Tip:
Bei dem meisten Pogrammiersprachen ist die F1-Taste die Hilfe-Taste,
setz' mal den Cursor auf "MODULO" und versuch's mit F1....
 
Sorry, hab mist geschrieben...

Zehner = Zahl MODULO 10
Einer = Zahl - (ZAHL modulo 10)

Da ist so falsch, obwohl es richtig drunter steht

zehner= zahl mod 10
einer = zahl - 10*zehner
 
Äh stop, gerät hier nicht einiges durcheinander? Modulo berechnet immer den ganzzahligen Rest, siehe Grundschule ;) also 7 geteilt 3 gleich 2 Rest 1.

"Zahl modulo 10" gibt demnach die Einer-Stelle aus! 45 Modulo 10 entspricht "45 geteilt 10 gleich 4 Rest 5".
Also:
Code:
Einer = Zahl % 10;
Zehner = Zahl / 10; // sollte passen, solange alle Zahlen Integer-Variablen sind, da Nachkomma-Stellen unterschlagen werden

Hmmm...vierstelliger Krams:
Code:
Tsdr = Zahl / 1000; // Tausender-Stelle ermitteln
Zahl = Zahl % 1000; // Tausender-Stelle absäbeln für nächste Operation
Hndr = Zahl / 100; // Hunderter-Stelle ermitteln
Zahl = Zahl % 100; // Hunderter-Stelle abschnibbeln
Zhnr = Zahl / 10; // Zehner-Stelle ermitteln
Zahl = Zahl % 10; // und wech damit ;)
Einr = Zahl; // eigentlich Einr =  Zahl / 1; naja *g*

Geht eleganter, aber so isses hoffentlich einleuchtender ;)
 
Zuletzt bearbeitet:
Wo er recht hat, hat er recht.

zehner = int (zahl / 10)
einer = zahl - 10* zehner || einer = zahl mod 10

is spät ;)
 
ich danke euch für eure Mühen, vor allem, dass ihr euch noch so spät die Mühe macht, mir zu helfen.

Ich werds mal nachher ausprobieren.
 
Oben