Pages: [1]   Go Down
Author Topic: Problema posicion compartida en dos Arrays [SOLUCIONADO]  (Read 341 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:

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:
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
« Last Edit: June 03, 2013, 06:09:39 pm by jlgarcia55 » Logged

Euskadi
Offline Offline
God Member
*****
Karma: 16
Posts: 721
Arduinotarrak
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
« Last Edit: June 01, 2013, 09:26:57 am by jlgarcia55 » Logged

Pages: [1]   Go Up
Jump to: