• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak sprawdzić ilość cyfr w liczbie (C++)

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
29,007 wizyt
pytanie zadane 3 września 2015 w C i C++ przez karmar435 Nowicjusz (240 p.)
Jak wyżej gdy np. chcę żeby program podał liczbę 3-cyfrową jeżeli otrzymał liczbę 5-cyfrową.

4 odpowiedzi

+1 głos
odpowiedź 3 września 2015 przez Rogargol Pasjonat (16,610 p.)
wybrane 3 września 2015 przez karmar435
 
Najlepsza

Wiadomo ze uzywanie gotowych metod jest wskazane, jednak troche to nie pozwala sie rozwinac. Programista stara sie na wszystkie czynnosci znajdowac gotowe funkcje itp, tymczasem chyba najwieksza zabawa jest odkrywanie sposobow samodzielnie. Pamietam ze nie majac dostepu do dokumentacji i nie znajac gotowych rozwiazan kiedys tez mialem taki sam problem. Rozwiazalem go dzielac w pętli dana liczbe przez dziesieć i sprawdzając czy otrzymana wartosc jest wieksza od 1, jesli tak to dzielimy dalej. Cos w tym stylu:

    double liczba;
    cin>>liczba;
​    int i=0;
    for(;  liczba > 1; i++)
       liczba=liczba/10;

 

Teraz w i mamy ilosc cyfr w liczbie. 

 

komentarz 3 września 2015 przez karmar435 Nowicjusz (240 p.)
Dzięki! Co do szukania odpowiedzi to głowiłem się nad nią jakiś czas, ale nie znając jeszcze podstawy trudno się czegoś domyślić. Jak na razie jestem dopiero przy 5odc. C++ pana Mirosława Zelenty :D
+3 głosów
odpowiedź 3 września 2015 przez hit02 Nałogowiec (33,970 p.)
edycja 3 września 2015 przez hit02

Będzie to bodajże coś takiego:

howManyDigits = (int)log10(number) + 1;

Dla systemu binarnegu wystarczy, że zamienisz logarytm na taki z podstawą 2, a nie 10.

PS Zauważ, że metoda działa tylko dla liczb dodatnich (patrz definicja logarytmu). Liczby ujemne możesz przed tą operacją zanegować, a dla 0 poprostu przypisać 1.

komentarz 28 listopada 2018 przez mokrowski Mędrzec (156,260 p.)
Yes... w końcu ktoś zaważa że "przekształci Pan to na string i bedzie dobrze" to słabe rozwiązanie. A i szybsze będzie.
komentarz 12 lutego przez sebbry Nowicjusz (100 p.)

@hit02, staary kocham cię właśnie czegoś takiego szukałem a nie jakiegoś gówna ze stringami albo pętlami jakimiś dziwnymi. Jeszcze raz kocham cię stary elo <3 <3.

+1 głos
odpowiedź 3 września 2015 przez Patrycjerz Mędrzec (192,320 p.)

Przerzuć liczbę do zmiennej string i sprawdź liczbę znaków (cyfr) za pomocą metody length.

komentarz 28 listopada 2018 przez manjaro Nałogowiec (37,390 p.)
Proste i logiczne. Też bym tak zrobił. Aż dziwne skąd ludzie biorą inne pomysły ;)
0 głosów
odpowiedź 3 września 2015 przez Dorion300 Szeryf (90,250 p.)
edycja 3 września 2015 przez Dorion300

Możesz int przekstałcić na string i obliczyć wielkość stringa za pomocą obiekt.size()

Tu przykład:

#include <iostream>
#include <cstdlib>
#include <sstream>
using namespace std;
int main()
{
    ostringstream ss;
    int i = 4545;
    ss << i;
    string wynik = ss.str();
    cout << wynik.size();
    return 0;
}

 

komentarz 3 września 2015 przez Patrycjerz Mędrzec (192,320 p.)
Ludzie, trochę kultury...
komentarz 3 września 2015 przez rafal.budzis Szeryf (85,380 p.)
Zwykłe stwierdzenie jak każde inne ale okej poprostu myśle ze ktoś z 60 tyś punktów ma na tyle duzą widze ze gdyby chwile pomyslał napisał by cos bardziej optymalnego. Sorry ale czasem jestem zbyt bespośredni ale bez przesady zeby robić z tego taka afere.
komentarz 3 września 2015 przez Sebastian Fojcik Nałogowiec (43,040 p.)

Zamiast bawić się w strumienie prościej użyć funkcji konwertującej na string i z automatu pobrać jego długość:

int liczba = 12345;
int cyfry = to_string( liczba ).length();
.


Efektywnością również nie powala, ale widać o co chodzi :-)

komentarz 4 września 2015 przez Dorion300 Szeryf (90,250 p.)
Oczywiście masz rację i można się pobawić pętla i z dziennikiem 10. I tak obejmować jedno zero i liczyć. A jak wynik będzie mniejszy to kończy pętlę i mamy ilość cyfr. Jest wiele dróg niektóre szybsze a niektóre proste wyglądają kosztem wydajności. Do wyboru do koloru.
komentarz 24 listopada 2018 przez Filip Kępka Nowicjusz (100 p.)

@Sebastian Fojcik, jaka biblioteka jest do tego potrzebna ??

komentarz 28 listopada 2018 przez Sebastian Fojcik Nałogowiec (43,040 p.)
Deklaracja funkcji to_string( ) znajduje się w nagłówku <string>.

Należy jednak zaznaczyć, że funkcja ta weszła do standardowych bibliotek C++ od wersji C++11 i właśnie w takiej (lub nowszej) musisz kompilować swój program, aby to działało

Podobne pytania

0 głosów
2 odpowiedzi 266 wizyt
pytanie zadane 30 listopada 2023 w C i C++ przez maxkolanko1998 Gaduła (3,230 p.)
0 głosów
3 odpowiedzi 1,890 wizyt
0 głosów
2 odpowiedzi 5,986 wizyt
pytanie zadane 2 sierpnia 2018 w C i C++ przez Nowacx02 Obywatel (1,060 p.)

93,116 zapytań

142,097 odpowiedzi

321,676 komentarzy

62,453 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...