[C/C++] Jak policzyć ilość cyfr w int

0

Np, że długość(int c=123) da 3?
Mam pewne rozwiązanie, ale tak "na około", że na razie nie podam, hehe
Może ktoś zna prostszy sposób?
Pozdrawiam Mart

0

Może zamienic int na string np. atoi()
A potem strlen() zmierzyć długość string

0

Witam, proponuje użycie funkcji ltoa() a potem sprawdzić długość stringu
np: ltoa(liczba, bufor, podstawa)
pamiętaj, że liczba musi być całkowita, byfor to gdzie zostanie zapisany wynik dzialania funkcji, a podstawa to w jakim systemie ma być wpisana liczba do bufora (jeżeli wpiszesz 10 to masz system dzieśiętny, 2 to dwójkowy).
A i ta funkcja jest w bibliotece stdlib.h

0

ale kombinujecie!

"
int numcyfr(int source)
{
int buf,num=1;
buf=labs(source);
if (buf > 9) num=2;
if (buf > 99) num=3;
if (buf > 999) num=4;
if (buf > 9999) num=5;
if (source

0

<quote>ale kombinujecie!

"
int numcyfr(int source)
{
int buf,num=1;
buf=labs(source);
if (buf > 9) num=2;
if (buf > 99) num=3;
if (buf > 999) num=4;
if (buf > 9999) num=5;
if (source

1

[code]int liczba=jakas_wartosc,cyfry=1;
while( (liczba/=10) != 0 )
cyfry++; [/code]

0

A mozna tez i tak :)

#include

int liczba = 123456789;
int ilosc = log10(liczba)+1;

0

Dobrze kombinuja ... jak bedziesz chcial sobie w ten sposob obsluzyc caly zakres liczby int to ci wyjdzie pokazny kawalek kodu, a rozwiazanie poprzednikow jest duzo mniej obszerne, bardziej uniwersalne i na pewno efektywniejsze.</quote>

o ile wiem in(signed) ma max 5 cyfr (-32767 +32768 - moge sie mylic o 1) mozna te funkcje przeladowac dla unsigned i wywalic ostatni warunek wiec nie wiem o co ci czlowieku chodzi z tym rozwinieciem?

u Ciebie int ma wiekszy zakres?

0

o ile wiem in(signed) ma max 5 cyfr (-32767 +32768 - moge sie mylic o 1) mozna te funkcje przeladowac dla unsigned i wywalic ostatni warunek wiec nie wiem o co ci czlowieku chodzi z tym rozwinieciem?

u Ciebie int ma wiekszy zakres?

Ano fakt, masz slusznosc ... popieprzylo mi sie z integerem z delphi [wstyd]

0

o ile wiem in(signed) ma max 5 cyfr (-32767 +32768 - moge sie mylic o 1) mozna te funkcje przeladowac dla unsigned i wywalic ostatni warunek wiec nie wiem o co ci czlowieku chodzi z tym rozwinieciem?

u Ciebie int ma wiekszy zakres?

Ano fakt, masz slusznosc ... popieprzylo mi sie z integerem z delphi [wstyd]

dlatego staram sie unikac pisania w dwu jezykach lub wiecej(nieraz dorywczo) bo mozna zglupiec

0

a może tak:
int liczba=1234567; //przykładowa liczba
int ile=0, b=1;
for(int i=0; i<11; ++i)
{
if(liczba/b>0) ile=i+1;
b=b*10; // potęgowanie
}
cout<<"ile cyfr:"<<ile<<endl;

0
#include <iostream>
#include <string>
#include <sstream>

int main() {
  int number;
  std::stringstream ss;

  std::cout << "Enter value: ";
  std::cin >> number;

  ss << abs(number);
  std::cout << ss.str().length() << std::endl;

  return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1