Autor Tema: Llamada a la función error...  (Leído 2345 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
Llamada a la función error...
« en: 19 de Octubre de 2004, 16:18:00 »
Enga otra duda mas hoy, y no he avanzado nada!!! no es mi dia!... bueno a lo q iba..

Estoy intentando crear una función de error, de tal modo que, pido unos datos al usuario mediante 2 botones de +/- y uno de OK, pido un valor máximo y otro mínimo, cuando son introducidos los 2 valores compruebo si estan bien, de tal forma que si el minimo es mayor que el máximo da error, pues bien, en el caso de que la comprobación sea erronea vuelve a pedir los valores, y aquí esta el problema, no se como hacer esto sin que me salga error de recursividad :S...

Os pongo un ejemplo:

Codigo:

void ajustar_max_y_min(void)
{
   lcd_putc("f");
   lcd_gotoxy(1,1);
   lcd_putc("Introduce Valor:");
   for(i=0;i!=255;i++)
   {
      lcd_gotoxy(1,4);
      printf(lcd_putc,"Max: %02u",max);
      if(!t_mas){delay_ms(100); max++; if(max>40){max=10;};}
      else if(!t_mns){delay_ms(100); max--; if(max==255 || max<10){max=40;};}
      else if(!t_ok){delay_ms(100); break;}
   };
.
.  Lo mismo para min...
.
   if(tmax<=tmin){error();}
.
.
.
void error(void)
{
   lcd_putc("f");
   lcd_gotoxy(8,1);
   lcd_putc("ERROR");
   lcd_gotoxy(1,2);
   lcd_putc("Valor maximo");
   lcd_gotoxy(1,3);
   lcd_putc("igual o inferior");
   lcd_gotoxy(1,4);
   lcd_putc("al valor minimo");
   delay_ms(2000);
}




Lo que quiero hacer es que al salir de la función error vuelva al principio de la función ajustar_max_y_min, y esto me da error de recursividad... como podría solucionarlo???

Gracias ;)

Desconectado oshow

  • PIC18
  • ****
  • Mensajes: 321
RE: Llamada a la función error...
« Respuesta #1 en: 19 de Octubre de 2004, 17:01:00 »
A ver me puedo equivocar, pero creo que esto podría funcionar, sería realizar un bucle mientras haya un error en la solicitación de datos.

No te pongo codigo, te pongo pseudo codigo, espero que se pueda entender:

Codigo:

mientras (flag==1)
{
   funcion_ajustar_max_y_min()
      {
         si los datos son correctos return y salimos de la     funcion y del bucle(ponemos flag=0 para salir);
         sino, tenemos error y se llamara a la funcion error, (  flag=error()  )
      }
}



int funcion error()
{
   //haces todo lo que quieras
   return 1;   //con esto indicas que la variable flag esta a 1 y que se repita el bucle...
}





//flag puede ser una variable de tipo booleana (int1), por ejemplo si hay un error pues pones la variable a uno y si no hay error a 0 y según este esta variable sales o no del bucle.


Espero que con este churro que he puesto puedas entender algo, pero ya es muy tarde y estoy "reventao" ultimamente esta siendo muy duro para mí, me peleo con el autocad durante 7 horas diarias y no me apetece mucho ponerme con el pc  a escribir código...

Un saludo.

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
RE: Llamada a la función error...
« Respuesta #2 en: 19 de Octubre de 2004, 18:21:00 »
ejeje Rebotado perfecto! Sonrisa


Muchisisimas gracias sozio!! q descanses q te lo has currao!Muchas risas


 

anything