Hola, soy nuevo en el foro.
Estoy intentando a partir de una variable int, guardar sus dígitos individuales en una matriz.
Es decir, supongamos que int=12345. Quisiera crear una matriz que fuera matriz[]={1,2,3,4,5}
Alguien podría ayudarme?
Muchas gracias.
Su publicacion se MUEVE a su ubicacion actual ya que es mas adecuada.
Moderador:
Por favor, lee las Normas del foro.
Si posteas en el foro en inglés usa idioma inglés para expresarte.
Si escribes en español debes usar el foro Arduino en español.
Desde el momento en que pones
int=12345
creo que estas verde (empezando con Arduinio) y debes repasar como se crean variables. No lo tomes a mal pero Internet esta lleno de información. Cualquier tema esta ampliamente desarrollado. No se pueden tener dudas casi, salvo cuando uno pasa a un programa mas grande o intenta entender algo mas complejo. Espero no lo tomes a mal, pero esto te servirá para autoresponderte preguntas futuras.
Un matriz unidimensional (1 dimensión) también conocido como vector unidimensional se define asi
int myPins[] = {2, 4, 8, 3, 6};
int mySensVals[5] = {2, 4, -8, 3, 2};
La primera define 5 elementos y deja que el compilador le ponga la dimensión de forma automática.
En el segundo esta claro que son 5 elementos y ese es el valor indicado.
Busca Arduino array o Arduino matrices
Perfecto. No sabía lo del foro en ingles o español.
Segundo, esta perfecto. Pero como puedo solucionar el tema de poner los dígitos de una variable int x=12345 en una matriz? Estuve buscando y no encontré nada. Se entiende la idea?
No se entiende la idea por tu explicación pero supongo que a esto te refieres, solo que es tan básico (aclaro que no me creo superior) que no entiendo como el link que te di no te haya dado la respuesta.
Si tienes definida una matriz
int x[10];
asignar un valor es tan simple como esto.
Lo que hice antes fue definir una matriz de 1 dimensión y 10 elementos.
Asigno algo al primer elemento
// asigno un valor 23 al primer elemento de la matriz
x[0] = 23;
// asigno 2000 al 5to
x[4] = 2000;
Hoy con Internet como es posible que no encuentres la respuesta a tu pregunta?
Arduino vector
Arduino matriz asignar valor
Cosas asi te dan respuesta inmediata.
Descompones el número en unidades, decenas, centenas, etc. (Matemáticas de primaria) y los guardas en el array.
Lee tu post inicial y lee este post?
Me perdí o nunca mencionaste el potenciometro para empezar?
Por favor, antes de seguir, ve y lee las normas del foro, solo para que no te guardes nada mas y lo vayas contando por el post 50. Ironía al margen, entiendes de qué hablo no? No importa si sabes o si no, pero explicarse debidamente es muy importante porque no leemos mentes.
A ver si entiendo el nuevo problema.
Tienes un potenciómetro, y lo pasas por map devolviendo algo entre 0 y 100. Ok!!
Quieres que en la matriz quede el valor mapeado pero con los digitos separados por decena y unidad y si es centena, que hacemos, porque no me has dicho que vamos de 0 a 99 sino de 0 a 100.
Asi que en tu caso podria ser
matriz[]={1, 0, 0};
//o
matriz[]={0, 5, 7};
y acostúmbrate en este foro a usar las etiquetas. </> para postear todo lo que sea código aunque solo sea una linea.
Esperaré a que me confirmes si esto es lo que quieres.
EDITO: bueno la siguiente respuesta sería la que dió @anon90500195.
Hola, existen varias formas de hacerlo, tal como digo @anon90500195 puedes hacerlo diviendiendo poco a poco.
Te pego un ejemplo de cómo podría ser para convertirlo tanto en caracteres ASCII ( {'1','2','3','4','5',\0} como en valores binarios {1,2,3,4,5,0} sin usar las divisiones, restas, etc.
int numero = 12345; //numero que vamos a convertir
char cadenaANSI[10]; //aqui guardaremos la cadena en texto. máximo 9 caracteres
char cadenaBINARIO[10]; //aqui la guardamos en binario máximo 9 caracteres
char *pchar; //puntero que apuntará a cada caracter
void setup() {
Serial.begin(9600); //inicializamos el puerto serie
Serial.println("Inicio");
//conversion a ANSI, es decir '1','2','3',etc.
Serial.println("En ANSI:");
sprintf(cadenaANSI, "%d", numero); //guardamos el numero en el buffer
Serial.println(cadenaANSI);
//conversión a binario
Serial.println("En BINARIO:");
sprintf(cadenaBINARIO, "%d", numero); //guardamos el número al igual que antes
pchar = cadenaBINARIO; //apuntamos al primer caracter de la matriz [0]
while (*pchar) //mientras no sea caracter 0x00 (nulo o \0)
{
*pchar = *pchar - 48; //le quitamos 48 para convertir un '0' en un 0x00
pchar++; //apuntamos al siguiente caracter
}
Serial.println(cadenaBINARIO);
Serial.println("Fin.");
}
esto dará la siguiente salida:
Blockquote
Inicio
En ANSI:
12345
En BINARIO:
Fin.
Repito que hay muchas formas, esta es una de ellas simplemente.
Saludos.
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.