Ayuda en un candado modificado

Hola fijate que me han dejado realizar un candado que cheque la contrasena y que una vez que esta este correcta me pregunte si la quiero cambiar y que la cambie, mi problema es cuando le pregunta si la quiere cambiar no se como puedo hacer que el programa tome la respuesta del usuario como valida, quizas he pensado si pone la contrasena correcta pida una nueva, pero finalmente creo que es lo mismo. Mmm bueno creo que no te he dicho lo estoy haciendo enalgo tipo  C, en Arduino, que funcionan de forma similar asi que no tengo problema transfiriendolo de uno a otro, ademas te dejo el codigo que he hecho y espero  que apartir de este me  puedas ayudar, o decirme mas o menos como, bueno muchas gracias de antemano
char rd [4];
char key[4]={'h','e','l','o'};
int i=0;
boolean F;
void setup () {
  Serial.begin(9600);
}
void loop () {
  F = true; //inicia la bandera
  //capturando contrasena
  while (Serial.available()> 4 ){
    for (i=0; i< 4; i++) //va incrementando el valor de el aux.
     rd  = Serial.read();
//leyendo contrasena copturada
   i=0;
   while (F != false && i< 4){ // si F es dif. De false e i es menor a cuatro se sigue ejecutando 
     if(rd==key) {i++;}
     else {F = false;}
  } 
   if (F == true){
     Serial.write('C');
     Serial.write('o');
     Serial.write('r');
     Serial.write('r');
     Serial.write('e');
     Serial.write('c');
     Serial.write('t');
     Serial.write('o');
      Serial.write('\n'); 
   }
     else  {
       Serial.write('I');
       Serial.write('n');
       Serial.write('c');
       Serial.write('o');
       Serial.write('r');
       Serial.write('r');
       Serial.write('e');
       Serial.write('c');
       Serial.write('t');
       Serial.write('o');
        Serial.write('\n'); 
     }
  } 
}
char rd [4];
char key[4]={'h','e','l','o'};
int i=0;
boolean F;
void setup () {  
Serial.begin(9600);}
void loop ({  
F = true; //inicia la bandera  
//capturando contrasena 
 while (Serial.available()> 4 ){
    for (i=0; i< 4; i++) //va incrementando el valor de el aux.    
rd  = Serial.read();      //leyendo contrasena copturada  
i=0;  
while (F != false && i< 4){  // si F es dif. De false e i es menor a cuatro se sigue ejecutando      if(rd==key){i++;}    
else {F = false;} 
 }     
if (F == true){  
  Serial.write('C');  
  Serial.write('o');    
Serial.write('r');    
Serial.write('r');    
Serial.write('e');  
  Serial.write('c');  
  Serial.write('t');    
Serial.write('o');    
 Serial.write('\n');  
  }  
  else  {  
    Serial.write('I');      
Serial.write('n');    
  Serial.write('c');  
    Serial.write('o');  
    Serial.write('r');  
    Serial.write('r');    
  Serial.write('e');  
    Serial.write('c');    
  Serial.write('t');    
  Serial.write('o');  
     Serial.write('\n');   
  } 
 }
 }
Gracias y espero me puedas ayudar. Saludos
Respuesta
1
Claramente tu estructura no es muy buena, te propongo algo así:
Contraseña_entrada = false;
Contraseña_Cambiada = false;
//loop hasta que se haya cambiado la contraseña
While (contrasña_Cambiada == false)
{
     //Si el usuario no ha entrado su contraseña
     if (Contraseña_entrada == false)
     {
         //Se le pide la contraseña 
         nueva_Contraseña = leer_contraseña();
         //Se comprueba que corresponde con la que tiene el sistema
          if (nueva_Contraseña == contraseña_sistema) Contraseña_Correcta = true;
      }
       if (Contraseña_correcta == true)
      {
           //Se le pide la contraseña 
          contraseña_sistema = leer_contraseña();
          //Se indica que se ha cambiado la contraseña
          contraseña_Cambiada = true;
       }
}
Hola muchas gracias primero por tu pronta respuesta y segundo por ayudarme con mi duda de lo que ue me diste he estado moviéndole y al parecer ya todo jala, y de vdd que muchas gracias no olvidare volverte a consultar.
xoxo Andy

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas