Go Down

Topic: Problema posicion compartida en dos Arrays [SOLUCIONADO] (Read 376 times) previous topic - next topic

Jun 01, 2013, 02:44 pm Last Edit: Jun 04, 2013, 01:09 am by jlgarcia55 Reason: 1
Hola a todos:
Estoy haciendo un programa para comparar unos datos con los de las ultimas 24h, y tras ver que no funciona correctamente, he llegado a la conclusion que tengo un problema con los arrays bastante peculiar:
Defino dos arrays de 10 elementos cada uno (en realidad lo hago con 60, pero el error es el mismo), y le asigno el mismo valor a todos los elementos de cada array, pero diferentes entre ambos arrays. Pues he comprobado que un array toma el valor de la ultima posicion del otro array... intuyo que asigna a cada posicion un lugar en la memoria del procesador, pero hasta donde llego, hay una posicion en el array (la ultima) que esta compartiendo esa memoria con otra posicion en el otro (la primera).

Igual con el codigo se ve mas claro:
Code: [Select]


int TempMaxMinuto[9];
int TempMinMinuto[9];

int Indice;

void setup()
{

 Serial.begin(9600);

for (Indice = 0; Indice < 10; Indice++) TempMaxMinuto[Indice]=-100;      
for (Indice = 0; Indice < 10; Indice++) TempMinMinuto[Indice]=1000;      

Indice = 0;
      while (Indice < 10)
        {
        Serial.print(Indice);
          Serial.print("==");
        Serial.print(TempMaxMinuto [Indice]);
        Serial.print(" ");
        Indice ++;
        }
      Serial.println("");
Indice = 0;      
      while (Indice < 10)
        {
        Serial.print(Indice);
          Serial.print("==");
        Serial.print(TempMinMinuto [Indice]);
        Serial.print(" ");
      Indice++;  
      }
      Serial.println("");
     
}

void loop()
{
}

El resultado devuelto es:

Code: [Select]

0==1000 1==-100 2==-100 3==-100 4==-100 5==-100 6==-100 7==-100 8==-100 9==-100
0==1000 1==1000 2==1000 3==1000 4==1000 5==1000 6==1000 7==1000 8==1000 9==1000


Alguien que me pueda explicar que ocurre y como corregirlo?
Gracias

curro92

Hola,
Cuando declaras
int TempMaxMinuto[9];
estás creando un array de 9 ementos. Al ser contiguos, al escribir el décimo valor, machacas el otro array. Si declaras TempMaxMinuto[10] no tendrás problemas.

#2
Jun 01, 2013, 04:00 pm Last Edit: Jun 01, 2013, 04:26 pm by jlgarcia55 Reason: 1
Gracias por la respuesta!
Pues ese el error. Veo que tenia un error de concepto, ya que, aunque los arrays son indexados a partir de 0, cuando se declaran, se pone el numero real de valores (por eso, para crear 10 valores, yo colocaba erroneamente 9, contando desde 0).

Un saludo.

Go Up