Deseo separar una cifra como 1234 en digitos individuales y agregarlos a su respectivo int para despues imprimir, he tratado, buscado metodos de posicionamiento para tomar el digito que deseo y no encuentro respuesta alguna, alguien sabe ese dato?
int DATO = 1234;
int DIGITO1 = 0;
int DIGITO2 = 0;
int DIGITO3 = 0;
int DIGITO4 = 0;
void setup() {
Serial.begin(9600);
Serial.println(DIGITO1);
Serial.println(DIGITO2);
Serial.println(DIGITO3);
Serial.println(DIGITO3);
}
void loop() {
}
Usando divisiones x enteros y % (módulo) vas logrando lo que deseas.
Supongamos que tienes 1234
- si buscas el módulo 10 o sea el resto de la división de 1234 entre 10 te dara 4, obtienes el primer dígito.
- Si divides 1234 x 10 te queda 123 cuando operas con entero
Repitiendo 1 y 2 resuelves en cada paso los numeros
Siguiente 123 % 10 = 3 obtienes la decena
123/10 = 12 sigues la operación
12%10 = 2 obtienes la centena
12/10 = 1 te queda el utimo digito
Pero como 1 es mayor que 0 sigues con una iteracción mas
1%10 = 1
1/10 = 0 y ahi terminas
Puesto en códigio
int cifras[10];
void setup() {
Serial.begin(9600);
separo(1234);
}
void loop(){}
void separo(int valor) {
int i = 0;
while (valor>0) {
cifras[i] = valor%10;
valor = valor/10;
Serial.println(cifras[i]);
i++;
}
}
Debería funcionar.
En cifras tienes cada digito, lo usas como desees.
cifras[0] tendrá la unidad,
cifras[1] tendrá la decena y asi