sábado, 20 de enero de 2018

TRABAJANDO CON ARRAYS

El código que adjunto más abajo está sin comentarios, pero ha sido explicado en clase, por lo que no estaría mal que ahora lo explicaseis vosotros.
El código compila perfectamente, por lo que con un copiar pegar lo podeis meter en vuestro IDE, y hacer pruebas, cambios, y todo lo que haga falta para comprenderlo mejor.

Y como no, un poco de tarea fácil. Este programa introduce los números del 1 al 10 en un array, empecemos por cambiar eso, y ahora meterá las decenas hasta el 100 (10,20,30.....100) y seguidamente, sorpresa, no los sumaremos, los invertiremos dentro del array, se me acaba de ocurrir, y cuando digo que los invertiremos digo eso, invertirlos, del 100 al 10, y no pido repetir el algoritmo invertido, no, eso sería muy fácil, me interesa más que el programa invierta el contenido del array, haya lo que haya dentro del array. Intentemos no utilizar demasiada memoria, variables, y código. Seguro que se nos ocurre un algoritmo interesante.

Si veo que sale fácil, cosa que estoy seguro, a mitad de semana igual se me ocurre algo nuevo.

______________________________________________________________________

/* SUMA DE NUMEROS DE UN ARRAY */

int count=0;
int NUMEROS[10];
bool FLAG = 1;
int RESULTADO = 0;

void setup()
{
pinMode(8,INPUT);
Serial.begin(9600);
Serial.println("PROGRAMA DE SUMA DE LOS NÚMEROS DE UN ARRAY");
Serial.println("");
}

void loop()
{
if (digitalRead(8) & FLAG){
Serial.print("Pulsado botón____ ");
delay (2);
count ++;

Serial.print("Pulsaciones = ");
Serial.println(count);

NUMEROS[count -1]=count;

Serial.print("NUMEROS[");
Serial.print(count-1);
Serial.print("] = ");
Serial.println(NUMEROS[count-1]);
Serial.print("\t");


FLAG = 0;
}

if (count == 10){
Serial.print("SUMANDO LOS NÚMEROS DEL ARRAY - ");

for (int i = 0; i < 10; i ++){
RESULTADO = RESULTADO + NUMEROS[i];
Serial.print("* ");
delay(250);
}

Serial.print("\t");
Serial.print("RESULTADO = ");
Serial.println(RESULTADO);


count = 0;
for (int i = 0; i < 10; i ++)NUMEROS[i] = 0;
RESULTADO = 0;
}

if (!digitalRead(8)) FLAG = 1;
}

6 comentarios:

  1. si se supone que el ultimo FLAG es un estamento que deberia estar dentro del ultimo if, no entiendo porque no veo lo corchetes para enlazar el if con ese FLAG. Alguien me lo podria explicar... porfavor.

    ResponderEliminar
    Respuestas
    1. Cuando en un condicional if, únicamente ejecuta una instrucción, no necesita los corchetes. Únicamente sería necesario incluir los corchetes si queremos que varias instrucciones cuelguen del condicional. Si se ponen los corchetes con una sola instrucción el programa funciona igualmente.

      Espero haberte aclarado la duda.

      Eliminar
    2. gracias, resuelta!!!

      Eliminar
  2. He resuelto la modificación planteada del ARRAY, en lugar de 1,2,3 cambiarlo por 10,20, 30 ha sido muy sencillo.
    La segunda parte lo he resuelto utilizando otro Array para guardar el valor de cada uno de los puestos que se van modificando, para no perder el dato original. Supongo que se podría utilizar un Array de dos filas o un int, pero lo he hecho utilizando un segundo Array.
    Intentarlo chicos, se puede hacer...

    ResponderEliminar
  3. yo no entiendo muy bien la parte del for del programa

    ResponderEliminar