Strona 1 z 1
[C++]rozbijanie liczb całkowitych
: 8 wrz 2011, o 16:47
autor: diego_maradona
Powiedzmy że mam w programie zadeklarowaną zmienną typu int
Co zrobić, żeby pobrać pierwszą cyfrę do zmiennej firstDigit?
[C++]rozbijanie liczb całkowitych
: 8 wrz 2011, o 17:17
autor: abc666
Pierwszą tzn. pierwszą z lewej czy z prawej?
[C++]rozbijanie liczb całkowitych
: 8 wrz 2011, o 17:31
autor: diego_maradona
Z lewej.
[C++]rozbijanie liczb całkowitych
: 8 wrz 2011, o 18:02
autor: Afish
1. Zrzutować na stringa / cstringa i wyciągnąć pierwszy znak
2. Dzielić przez 10 aż do otrzymania zera. Wtedy ostatnia niezerowa liczba jest tą poszukiwaną.
[C++]rozbijanie liczb całkowitych
: 8 wrz 2011, o 18:05
autor: abc666
Jeśli to nie jest jakiś kluczowy element algorytmu to można np. tak
Kod: Zaznacz cały
int first = number;
while(first>10) first /= 10;
[C++]rozbijanie liczb całkowitych
: 8 wrz 2011, o 18:10
autor: Afish
abc666, nie zadziała dla liczb ujemnych.
[C++]rozbijanie liczb całkowitych
: 8 wrz 2011, o 18:23
autor: abc666
Szczegóły :p
[C++]rozbijanie liczb całkowitych
: 8 wrz 2011, o 19:31
autor: Xitami
[C++]rozbijanie liczb całkowitych
: 8 wrz 2011, o 19:38
autor: adambak
funkcja ... o/sprintf/
załatwi sprawę, pierwszy znak tablicy charów to będzie szukana cyfra..
[C++]rozbijanie liczb całkowitych
: 8 wrz 2011, o 20:50
autor: Xitami
Kod: Zaznacz cały
unsigned int firstdigit(unsigned int n) {
if(100000<=n)
if(100000000<=n)
if(1000000000<=n) return n/=1000000000;
else return n/=100000000;
else
if(10000000<=n) return n/=10000000;
else
if(1000000<=n) return n/=1000000;
else return n/=100000;
else
if(1000<=n)
if(10000<=n) return n/=10000;
else return n/=1000;
else
if(100<=n) return n/=100;
else
if(10<=n) return n/=10;
else return n;
}
by było czytelniej wersja bardziej zwięzła
Kod: Zaznacz cały
#define _0 /10;
#define _7 _0 else
#define _8 <=n)
#define _9 return n/=
#define _1 int firstdigit(unsigned int n) {if(
#define _2 _8 if(
#define _3 _8 _9
#define _4 _7 _9
#define _5 _7 if(
#define _6 _0}//
_1 100000 _2 100000000 _2 1000000000 _3 10000000000 _4 1000000000 _5 10000000 _3 100000000 _5 1000000
_3 10000000 _4 1000000 _5 1000 _2 10000 _3 100000 _4 10000 _5 100 _3 1000 _5 10 _3 100 _4 10 _6
[C++]rozbijanie liczb całkowitych
: 10 wrz 2011, o 14:07
autor: diego_maradona
Afish pisze:1. Zrzutować na stringa / cstringa i wyciągnąć pierwszy znak
2. Dzielić przez 10 aż do otrzymania zera. Wtedy ostatnia niezerowa liczba jest tą poszukiwaną.
Ta pierwsza metoda wydaje się dużo łatwiejsza
[C++]rozbijanie liczb całkowitych
: 10 wrz 2011, o 17:42
autor: Xitami
Kod: Zaznacz cały
O11(O1l)<%return O1l/*->*/>011?O11(O1l/(011+'/'/'/')):O1l;%>
main(d){
for(d=10; d<1000; d+=d/10)
printf("%3d %d\n", d, O11(d));
}
działanie można sprawdzić dzięki