Länge eines int bestimmen
-
Hi Leute, so wie mein Username schon sagt, bin ich ein Newbee.
Ich habe eine warscheinlich ganz einfache Frage, wie kann ich die Zeichenlänge eines Int bestimmen?als Beispiel:
int i = 1000;
int Anzahl;-> Jetzt soll Anzahl dem Wert 4 zugeordnet werden, da 1000 vier Stellen hat.
kann mir da jemand helfen?
danke
-
newbee1 schrieb:
Hi Leute, so wie mein Username schon sagt, bin ich ein Newbee.
Ich habe eine warscheinlich ganz einfache Frage, wie kann ich die Zeichenlänge eines Int bestimmen?als Beispiel:
int i = 1000;
int Anzahl;-> Jetzt soll Anzahl dem Wert 4 zugeordnet werden, da 1000 vier Stellen hat.
kann mir da jemand helfen?
danke
Das sollte einfach so gehen:
int stellen = log(zahl)
oder
int stellen = log(zahl)+1
musst du selber ausprobieren bzw. nachdenken!
-
Sollte das nicht log10 heißen?
-
Ursprünglich gelöscht von Volkard
[EDIT]
Ich hoffe folgendes hat Bestand:Dummer, einfältiger, langsamer Lösungsvorschlag:
unsigned int CountDigits(int iNumber) { unsigned int uiDigits = 0; do { iNumber = iNumber / 10; uiDigits ++; }while(iNumber!=0); return uiDigits; }
Ich bitte nochmals in aller Form um Entschuldigung für meine übermäßige Hast. Werd in Zukunft genauer hinsehn! Versprochen
-
ja, so berechne ich aber nur den Logarithmus und das ist nicht das was ich wollte, das es nicht die Länge wiedergibt.
log 1 = 0
log 2 = 0,3
log 9 = 0,9
log 99 = 1,9an den Beispielen sieht man ja das das nicht immer zutrifft.
gibt es noch eine genauere Möglichkeit?
-
newbee1 schrieb:
ja, so berechne ich aber nur den Logarithmus und das ist nicht das was ich wollte, das es nicht die Länge wiedergibt.
log 1 = 0
log 2 = 0,3
log 9 = 0,9
log 99 = 1,9an den Beispielen sieht man ja das das nicht immer zutrifft.
gibt es noch eine genauere Möglichkeit?beim zuweisen an den int wurde doch abgerundet. wo ist das problem?
-
@vokard:
Womit verdiente mein Post die Löschung?
EDIT:
s.o.
-
Hehe, das wüsste ich auch gerne, was haste denn für eine abwegige Lösung vorgeschlagen?
Macht ja erst recht neugierig.BTW: Es ist Sommerzeit.
-
AAAhhhhH!!! Weiß schon!!
@Volkard: Tut mir leid! Hab' nicht genau gelesen. Dumm von mir - Entschuldige Bitte.
-
Swordfish schrieb:
@vokard:
Womit verdiente mein Post die Löschung?mit deinem "Ab und zu führt _nachdenken_ zum Ziel" hast du um löschung gebeten. das erweckte irgendwie den eindruck, als sei die bereits vorgeschlagene lösung völlig doof und deine total klasse. und als würde jeder, der ne dumme frage stellt, nicht nachdenken wollen. (erinnert mich daran, daß alle arbeitslosen nicht arbeiten wollen.)
das "denk selber nach" und die abarten sind einfach nur mieses verhalten von tggc und sollen hier nicht mode werden. es ist schlicht ein erniedrigen anderer, um sich selbst zu erhöhen. also lösche ich solche postings. (ich lösche deswegen auch jedes posting, wo ein link auf seine seite drin ist.)zum fachlichen ist es egal, ob wo mal ein fehlerchen ist.
über den sinn ungarischer notation könnte man diskutieren. oder über die definiertheit des op/ bei negativen zahlen. darüber, ob man a=a/b oder a/=b schreiben sollte. ob man funktionsnamen groß schreiben sollte. über den bracing style. ob man auf übergabevariablen arbeiten sollte. präinkrement statt postinkrement. man könnte bestaunen, wie elegant du die do-schleife gesetzt hast, um nicht den sonderfall 0 zu haben, den man mit einer while-schleife hätte. dann natürlich diskutieren, ob mal nicht while(iNumber/=10) screiben sollte. oder wenigstens sich das vorstellen, indem man die beiden zeilen im schleifenkörper vertauscht. man könnte drüber nachdenken, ob davor eine schleife mit /1000 oder gar ganz ein entscheidungsbaum nicht erheblich schneller wäre. aber das sind alles nicht sachen, wegen derer ich als mod eingreifen müßte.
-
int Anzahl = log10(abs(i))+1;
-
life schrieb:
int Anzahl = log10(abs(i))+1;
dann würde ich sogar trennen, daß man die unsigned-variante noch zugreifbar behält.
unsigned int CountDigits(int iNumber) { return CountDigits(static_cast<unsigned int>(abs(iNumber))); }
nebst
unsigned int CountDigits(unsigned int iNumber) { //irgendwie }
-
naja die variable, dessen länge er bestimmen wollte, war nunmal signed. Natürlich kann man jetzt anfängen und eine methode für alle möglichen typen implementieren (unsigned int, float, unsigned float, etc.), aber das halte ich für etwas übertrieben ..
-
Swordfish [gelöscht] schrieb:
Manchmal führt _nachdenken_ zum ziel...
sollte keineswegs abwertend bzw. beleidigend rüberkommen, war eher als späßchen gedacht.
Anfänglich dachte ich, mein Post wäre schlicht wegen einem stupiden Vorschlag gelöscht worden. Ich hab' mir nicht vorstellen können, das meine Aussage (^Zitat) zur Löschung geführt haben soll. Ich hab einfach nicht gewusst, daß es hier im Forum Leute gibt (tggc wie man hört), die solche Statements Posten und die dann auch noch völlig ernst meinen - und auch ernstgenommen werden. Ich wollte niemanden erniedrigen sondern lediglich etwas Humor zeigen.Wie man an meinem Anmeldedatum sieht bin ich neu hier und will mir niemanden zum Feind machen. Ich hoffe, meine Entschuldigung ist angekommen und wird akzeptiert.
P.S: hm... du bist der 3. der meine Angewohnheit die ungarische Notation zu verwenden kritisiert. Vielleicht sollte ich drüber nachdenken
-
Swordfish schrieb:
Ich hab einfach nicht gewusst, daß es hier im Forum Leute gibt (tggc wie man hört), die solche Statements Posten und die dann auch noch völlig ernst meinen - und auch ernstgenommen werden.
Und jetzt denk mal nach, warum so aggressiv TGGC Beiträgre gelöscht werden
-
Swordfish schrieb:
P.S: hm... du bist der 3. der meine Angewohnheit die ungarische Notation zu verwenden kritisiert. Vielleicht sollte ich drüber nachdenken
Ist eigentlich dir überlassen, aber durch die Forensuche findest du sicher einige Argumente dagegen.
-
@shade:
nachdem ich neu bin, kann ich nicht wissen, das tggc's beiträge regelmäßig gelöscht werden bzw. warum dies geschehen sollte.@ALL:
Ist meine Entschuldigung angekommen? Kann mir verziehen werden?
-
Swordfish schrieb:
nachdem ich neu bin, kann ich nicht wissen, das tggc's beiträge regelmäßig gelöscht werden bzw. warum dies geschehen sollte.
Er ist unfreundlich und postet sehr oft Müll der niemandem weiterhilft.
Ist meine Entschuldigung angekommen? Kann mir verziehen werden?
Willst Du jetzt 16.000mal "Klar, kein Problem lesen"?
Benimm Dich in Zukunft einfach, dann werden solche Entschuldigungen idR natürlich
angenommen.
-
nman schrieb:
Benimm Dich in Zukunft einfach, dann werden solche Entschuldigungen idR natürlich
angenommen.oder machs wie ich und scheiß einfach drauf, ob du dir mit der aussage freunde machst oder nicht ;)... Obwohl ich grade mit genugtuung feststellen muss, dass von mir noch nie beiträge gelöscht / editiert wurden :>
-
Ich mal wieder.
Hab gepennt da hat jemand schon das gleiche gepostet