Go Down

Topic: calcular promedio utilizando array (Read 277 times) previous topic - next topic

diodo08

Hola mi nombre es pablo, hace poco empece a estudiar electrónica y nos están enseñando a programar con arduino. tengo el siguiente problema, pido mil disculpas, es la primera vez que utilizo un foro y no se como se utiliza, pero desde ya muchas gracias, es una pregunta muy básica, que yo no se como hace:
Tengo un array de 7 datos de temp, ya establecidos, lo que tengo que hacer es usar esos datos para calcular un promedio de esas temp, y luego mostrar el resultado en un LCD. Lo que hice fue lo siguiente

#include <LiquidCrystal.h>

LiquidCrystal lcd (8, 9, 4, 5, 6, 7);

void setup()

{
  lcd.begin(16, 2);
  lcd.setCursor(0, 0);
  lcd.print ("El promedio de Temp es:");
}

int temp [] = {10, 17, 11, 12, 14, 18, 15  } ;

int prom ( int temp )

{
  int y, suma;

  for ( byte i = 0; i < 10; i++)
  {
    suma = 0;

    y = ( (suma + temp[7]) / 7);

    return y;
  }
}


  void loop()

  {
    int y, prom;
    y = prom;
    lcd.setCursor(0, 1);
    lcd.print(y);
  }


el problema creo que esta, en que no entiendo bien, como recorrer un array con un ciclo for, y quizas la funcion este mal definida o mal hecha.
Muchas gracias, por su ayuda, pido disculpas por nosaber utilizar un foro y bueno, espero que puedan ayudarme.

noter

#1
Nov 26, 2015, 07:52 pm Last Edit: Nov 26, 2015, 07:55 pm by noter
Hola.
Te envío directamente la que creo que es la solución (no lo he probado) con un par de comentarios. Si hay algo que no entiendes pregunta por aquí de nuevo.

Code: [Select]

#include <LiquidCrystal.h>

LiquidCrystal lcd (8, 9, 4, 5, 6, 7);

int temp[] = {10, 17, 11, 12, 14, 18, 15};

void setup()
{
  lcd.begin(16, 2);
  lcd.setCursor(0, 0);
  lcd.print ("El promedio de Temp es:");
}

void loop()
{
  int y, prom;
  y = prom;
  lcd.setCursor(0, 1);
  lcd.print(y);
}

int prom () // No se envía parámetro, pues hemos declarado el array temp global
{
  int y=0, suma = 0;
  for ( byte i = 0; i < 7; i++)
  {
    suma += temp[i]; //Sumamos cada uno de los elementos del array
  }
  y=suma/7; // dividimos por siete y tenemos la media
  return y;
}


Sólo te pido que eches un vistazo a las normas del foro y aprendas el manejo de los iconos que tienes encima del editor donde escribes los mensajes. Sólo tienes que detener el puntero del ratón encima de cada uno de ellos para saber para qué sirven. Por ejemplo ¿Ves qué bonito luce mi código con su ventanita, su barra de desplazamiento y su select arriba? ;)

diodo08

Lo voy a probar muchas gracias. y voy a leer las normas y tratar de aprender a utilizar un foro.
vi que en otros post salia esa ventana, pero lo necesita urgente y bueno, no tenia tiempo de leer. muchas gracias.saludos

diodo08

Hola, todavía no he podido probarlo porque no tengo el LCD, tengo que esperar a clases para poder usarlo, estuve leyendo y no encontré casi nada.
no entiendo por que se coloca esto :

 int prom () // No se envía parámetro, pues hemos declarado el array temp global

osea porque no lleva parámetros, que tiene que ver que el array sea temp, sea global?

y cuando declara: int y=0, no tendría que ser tipo float?, porque la media es un numero decimal

Muchas gracias por su ayuda

noter

Hola.
Todo depende del uso que le vayas a dar. Si el array con el que vas a trabajar es siempre el mismo, y además es un array local, ¿Para qué vas a enviarlo a tu función, si ya es accesible desde ella como array global? Hombre; claro que también puedes, pero es un poco liar la madeja para nada.
Otra cuestión es que quieras hacer una función a la que le quieras enviar arrays distintos. Entonces sí que deberá recibirlo como un parámetro.
En cuanto a la variable de retorno, efectivamente deberá ser float si es que así lo necesitas.

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy