Arduino Polska Forum
Rozłożenie liczby 8 cyfrowej na tablicę - Wersja do druku

+- Arduino Polska Forum (https://forum.arduinopolska.pl)
+-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino)
+--- Dział: Programowanie w Arduino (https://forum.arduinopolska.pl/dzial-programowanie-w-arduino)
+--- Wątek: Rozłożenie liczby 8 cyfrowej na tablicę (/watek-roz%C5%82o%C5%BCenie-liczby-8-cyfrowej-na-tablic%C4%99)



Rozłożenie liczby 8 cyfrowej na tablicę - StaszekIM - 05-03-2016

Witam 
Mam mały problem z napisaniem kodu, który liczbę zapisaną jako np. 00010001 rozłożyłby mi na tablicę która wyglądałaby tak: {0, 0, 0, 1, 0, 0, 0, 1}.
Mój kod wygląda w tej chwili tak:
Kod:
void rozdz(int lic){
 int el[8];
 for(int a=7;a>=0;a--){
   el[a]=lic%10;
   lic /= 10;
 }
 for(int a=0;a<8;a++){
   Serial.print(el[a]);
   delay(500);
 }
}

void setup() {
 Serial.begin(9600);
 rozdz(00010001);
}

void loop() {

}

Nie wiem z jakiego powodu, monitor wypluwa mi 00004097. Próbowałem wstawić jedynkę na początek przypuszczając że może to być wina liczby zaczynającej się od zera (100010001), wynik to 00002065, gdy wstawiłem 2 (200010001) dostałem 0 0 0 0 -5 -8  -7 -1... Mógłby mi ktoś wytłumaczyć skąd to się bierze i jak to naprawić? Z góry dziękuję za pomoc


RE: Rozłożenie liczby 8 cyfrowej na tablicę - Magikkomputerowy - 05-03-2016

Zrób stringa z liczby. Jestem programistą PHP, a w arduino dopiero zaczynam, ale na bank jest możliwość przekształcenia typu zmiennej i następnie podzielenie jej na części. Z tego co wyczytałem to przyda ci się funkcja trim(). A wychodzą ci jakieś egzotyczne wyniki bo ty dzielisz tą liczbę: el[a]=lic%10;


RE: Rozłożenie liczby 8 cyfrowej na tablicę - StaszekIM - 06-03-2016

Już wiem co było przyczyną. Nie zwróciłem zupełnie uwagi na typ zmiennej którą wprowadzam do funkcji - próbowałem wprowadzić liczbę 9-cyfrową do zmiennej typu integer... Po zmienieniu tego na unsigned long wszystko działa.

(05-03-2016, 20:35)Magikkomputerowy napisał(a): A wychodzą ci jakieś egzotyczne wyniki bo ty dzielisz tą liczbę: el[a]=lic%10;

To nie dzielenie, to funkcja modulo (reszta z dzielenia liczby przez daną)