• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Rozłożenie liczby 8 cyfrowej na tablicę
#1
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
 
Odpowiedź
#2
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;
 
Odpowiedź
#3
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ą)
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości