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

Ilość cyfr w liczbie

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
263 wizyt
pytanie zadane 30 listopada 2023 w C i C++ przez maxkolanko1998 Gaduła (3,230 p.)

Chciałbym pobrać od użytkownika liczbe i policzyć ilość jej cyfr zapisując ją do tablicy i przechodząc po elementach tej tablicy. Jak to zrobić? Tutaj przykładowy kod:

#include <iostream>

using namespace std;
int rozmiar, liczba;
int main()
{
    cout << "Wpisz liczbe: "<<endl;
    cin >> liczba;
    int tab[230] = {liczba};
    rozmiar = liczba;
    for(int i = 0; i < rozmiar; i++)
    {
        cout <<tab[i];

    }
    cout <<"Liczba elementow w talbicy: "<< rozmiar;
    return 0;
}

 

komentarz 30 listopada 2023 przez adrian17 Mentor (350,120 p.)
Uwaga na boku: nie ma żadnego powodu, by `rozmiar`, `liczba` były zmiennymi globalnymi - powinny po prostu być w funkcji.
2
komentarz 30 listopada 2023 przez Gynvael Coldwind Nałogowiec (30,110 p.)

@maxkolanko1998, Technicznie log10 odpowiada na pytanie ile jest cyfr w liczbie ;)

komentarz 30 listopada 2023 przez pasjonat_algorytmiki Pasjonat (19,540 p.)
To jest niestety trochę nieprawda, bo log10 z tego co wiem to operuje na float-ach / doublach no i dla dużych liczb np. koło 10^18 może się pomylić. Pisałem kiedyś z kolegami drużynówke i właśnie przez to z ponad godzinę straciliśmy nad jednym zadaniem, bo nie mogliśmy znaleźć błędu w kodzie, a to byl log10, który gubił precyzję dla dużych liczb. Dlatego preferuje używanie tego co napisałem w odpowiedzi z dzieleniem przez 10.
komentarz 30 listopada 2023 przez Gynvael Coldwind Nałogowiec (30,110 p.)
Nie no, to jest prawda, po prostu w przypadku który opisujesz użyliście złej implementacji log10, która operowała na zbyt małych liczbach.

To powiedziawszy, przypuszczam, że implementacja z dzieleniem jest sporo szybsza niż liczenie log10 ;)

2 odpowiedzi

+2 głosów
odpowiedź 30 listopada 2023 przez pasjonat_algorytmiki Pasjonat (19,540 p.)
wybrane 30 listopada 2023 przez maxkolanko1998
 
Najlepsza

Jak chcesz zliczyć ile cyfr ma liczba x, to możesz to zrobić tak:

inline int cnt(int x)
{
	int ile_cyfr = 0;
	while(x > 0)
	{
		ile_cyfr++, x /= 10;
	}
	return ile_cyfr;
}

Jak byś chciał jeszcze znać tą ostatnią cyfrę, to byś musiał robić x % 10 przed dzieleniem przez 10.

+1 głos
odpowiedź 30 listopada 2023 przez adrian17 Mentor (350,120 p.)
edycja 30 listopada 2023 przez adrian17

Nie potrzebujesz tutaj żadnych tablic.

W najprostszej wersji, mógłbyś zamienić tą liczbę na stringa z to_string() i wypisać długość stringa.

Jak chcesz to zrobić bardziej ręcznie, to to się da zrobić pętlą z samymi operacjami arytmetycznymi - nie trzeba żadnych tablic.

int tab[230] = {liczba};

TBH nie wiem co tutaj chciałeś zrobić :c

komentarz 30 listopada 2023 przez Great Stary wyjadacz (12,660 p.)

zamienić tą liczbę na stringa z stoi()

z std::to_string. Choć wygodniej jest od razu wczytać dane do stringa.

komentarz 30 listopada 2023 przez adrian17 Mentor (350,120 p.)
ups, moja gafa, poprawiłem. Tak się dzieje gdy piszę po północy :P

Podobne pytania

0 głosów
4 odpowiedzi 28,993 wizyt
pytanie zadane 3 września 2015 w C i C++ przez karmar435 Nowicjusz (240 p.)
0 głosów
2 odpowiedzi 5,957 wizyt
pytanie zadane 2 sierpnia 2018 w C i C++ przez Nowacx02 Obywatel (1,060 p.)
0 głosów
3 odpowiedzi 1,886 wizyt

93,106 zapytań

142,082 odpowiedzi

321,605 komentarzy

62,447 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!

...