[c++] Porgram obliczający ilość cyfr


(Bombix) #1

Witam, mam kłopot z napisaniem programu, który będzie wczytywał liczbę całkowitą z klawiatury i ma on obliczyć ilość cyfr z jakich składa się ta liczba (wiem, ze należy tu wykorzystać dzielenie całkowite przez 10 jednakże w praktyce mi to nie wychodzi). Proszę o pomoc.


(Quentin) #2

Był już taki temat:

:arrow: viewtopic.php?f=23&t=323572


(Bombix) #3

Wiem, ze byl ale bym prosił o wytłumaczenie to w prostszy sposób może chciaż kawałek napisać. Nie wiem w jaki sposób zwiększać licznik.:confused: Oraz czy zrobić to za pomocą do while, czy moze petla for?


(Fiołek) #4

A co to za różnica? Wychodzi na jedno.

Ogólnie algorytm jest prosty(dla dowolnej bazy, gdzie baza > 1, dla Ciebie bazą będzie liczba 10):

dopóki liczba > 0 rób

   licznik += 1

   liczba /= baza

To taki pseudokod :stuck_out_tongue: Działa dla każdej liczby(lecz ujemnych nie sprawdzałem, ale powinno działać).

EDIT: Aż sam się zdziwiłem, że to napisałem. Nigdy nie powielałem informacji(które już istnieją na tym forum). No ale mam dziś(o dziwo) bardzo dobry dzień. :smiley:


([alex]) #5

Po co tak komplikować?

unsigned LiczbaCyfr=1+log10(liczba); //dla reprezentacji dziesiętnej       [/code]
Dla innych systememów

[code=php]unsigned LiczbaCyfr=1+log(liczba)/log(2); //dla reprezentacji w systemie dwójkowymunsigned LiczbaCyfr=1+log(liczba)/log(8); //dla reprezentacji w systemie osiemkowymunsigned LiczbaCyfr=1+log(liczba)/log(16); //dla reprezentacji w systemie szesnastkowym 
Nie zapomnieć dołączyć:

#include   [/code]

(Fiołek) #6

Wiem, że można i tak, ale chciał wykorzystać pętle, więc ma z pętlami :stuck_out_tongue_winking_eye:


([alex]) #7

A gdyby chciał z użyciem fraktalów tez by zacząłeś w tym kierunku kombinować?