Null
- +/- sve poruke
- ravni prikaz
- starije poruke gore
SizeOf(int)???
Radi se o jeziku c++, znam da se nesto radi oko size funkcije. No neznam tocno kako to postaviti.
Pretpostavljam da misliš na signed int.
U memoriji zauzima 4 bajta, a opseg mu je od –2,147,483,648 do 2,147,483,647.
Kod unsigned int-a, nema negativnih brojeva i ide samo u plus, zauzima isto, a opseg je od 0 do 4,294,967,295.
Null
Konvertiraj u string ili polje znakova char, onda uzmeš duljinu polja.
Null
Konvertiraj u string ili polje znakova char, onda uzmeš duljinu polja.
Dobra ideja, thanks!!!!
Odbaci desnu znamenku kroz petlju, i tako sve dok broj ne postane 0, broj iteracija petlje je broj znamenki, vodi računa o tome da tako uništiš broj.
for(; broj>0; broj /= 10)
brojac++;
Ajde, molio bi tog cijenjenog davača tda da mi objasni u čemu sam napravio grešku, iskreno, ja je ne vidim, pa bi volio da mi kaže da je i ja uočim.
TD je za eleganciju, inače je točno.
TD je za eleganciju, inače je točno.
aha, hvala na pojašnjenju, inače pisao sam diretno u editor, a ne preko IDE-a jer su samo dvije linije koda.
Ako su u pitanju 32-bitni integeri mozes napraviti ovako nesto:
#include <iostream>
#include <limits>
int numDigits(int x)
{
if (x == std::numeric_limits<int>::min()) return 10;
if (x < 0) return numDigits(-x);
if (x >= 10000)
{
if (x >= 10000000)
{
if (x >= 100000000)
{
if (x >= 1000000000)
return 10;
return 9;
}
return 8;
}
if (x >= 100000)
{
if (x >= 1000000)
return 7;
return 6;
}
return 5;
}
if (x >= 100)
{
if (x >= 1000)
return 4;
return 3;
}
if (x >= 10)
return 2;
return 1;
}
int main(void)
{
int numOfDigits = numDigits(-2147483648);
std::cout << numOfDigits << '\n';
return 0;
}
Ako zelis i minus racunati kao znamenku, samo dodaj u ova prva dva if-a +1, dakle:
if (x == std::numeric_limits<int>::min()) return 10 + 1;
if (x < 0) return numDigits(-x) + 1;