Buenas tardes: Expongo el siguiente problema, uso matrices bidimensionales dos por
cada mes de año esto supone un total de 24 matrices, cada una de ellas se reconoce a
través de un nombre esto supone construir un sketch horroroso, la manera de simplificarlo al efectuar la llamada seria utilizar una variable, por ejemplo algo así:
Nombre real de las matrices seria, (mes1_1quincena), (mes1_2quincena) y así cada vez, la solución seria pues algo así (if (tal cosa es así) char nombreMatriz = mes1_1quincena" y entonces llamar a la matriz así (float valor = nombreMatriz[0][4]).
Pues esto no funciona he echo muchas pruebas sin ningún resultado positivo tal es así
que estoy usando la EEPROM de Arduino para almacenar todas las 24 matrices y entones cargar los datos de interés a través de su numero memorial.
Esto funciona bien pero preferiría hacerlo del modo antes dicho, por tanto la pregunta
es ¿Hay alguna manera de utilizar una variable para llamar a una matriz bidimensional,
con valores float?.
Gracias por la paciencia que tenéis. Un abrazo y muchas gracias.
Porque la matriz debe llamarse de derminado modo?
Puedes usar una matriz dinámica o cargar una matriz dada con los datos que estan almacenados en la flash?
Explica por favor, el objetivo con mas detalle, ya que queda claro el cómo pero no veo para que necesitas eso?
Por el momento, lo único que se me ocurre es usar una matriz de 3 dimensiones.
La 3er dimensión es la que determina alguna de tus quincenas o meses.
Tal como dice @Surbyte yo optaría por múltiples dimensiones.
Otro punto de vista sería el uso de punteros tal que así:
float eneroPq[31][24]; //enero, primera quincena
float eneroSq[31][24];//enero, segunda quincena
float febreroPq[31][24];//febrero, primera quincena
float febreroSq[31][24];//febrero, segunda quincena
//etc etc ...
float (*quincena_actual)[31][24]; //notese que tiene un puntero
//etc etc ...
switch (quincena)
{
case 1:
quincena_actual=&eneroPq;
break;
case 2:
quincena_actual=&eneroSq;
break;
case 3:
quincena_actual=&febreroPq;
break;
//etc etc ...
default:
{}
}
//etc etc ...
//ya tenemos que quincena_acual apunta realmente al array que queremos
*quincena_actual[10][20]=12.34;
Serial.println(*quincena_actual[10][20]);
No lo he probado pero sería algo así...
Tambien es posible usando memcpy y copiar la quincena actual en un array y trabajar sobre ese array.
https://www.delftstack.com/es/howto/arduino/arduino-memcpy/
Saludos.
Bueno @DanX3 interpretó mi idea tal como la habia pensado, una asignación dinámica.
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.