A -- > Bm | Bn | aC
B -- > b | bB
C -- > c | cC
import javax.swing.JOptionPane;
public class GramaticaExamen {
public int pos;
private char cad[];
private int t;
public void estableceCad(String c){
cad = c.toCharArray();
t = c.length();
}
public boolean evalua(){
try{
pos=0;
if(cad[0] == 'a' || cad[0] == 'b'){
if(cad[0] == 'a'){
if( evaluaC() ){
return true;
}
return false;
}
else{
if(evaluaB()){
if( (pos == t-1 ) && (cad[pos] == 'n' || cad[pos] == 'm'))
return true;
return false;
}
return false;
}
}
return false;
}
catch(ArrayIndexOutOfBoundsException ytba){
System.out.println("Problema"+ytba.getMessage());
return false;
}
}
public boolean evaluaC(){
pos++;
while( pos < t && cad[pos] == 'c' )
pos++;
if(pos > 1 && pos == t)
return true;
return false;
}
public boolean evaluaB(){
while( pos < t && cad[pos] == 'b' )
pos++;
if(pos == t-1){
return true;
}
return false;
}
public static void main(String[] args) {
GramaticaExamen e = new GramaticaExamen();
try{
while(true){
e.pos = 0;
e.estableceCad(JOptionPane.showInputDialog(null,"Ingrese la cadena a verificar","Entrada Abelo003",JOptionPane.PLAIN_MESSAGE));
if(e.evalua())
JOptionPane.showMessageDialog(null,"Cadena CORRECTA","OK!!!!",JOptionPane.INFORMATION_MESSAGE);
else
JOptionPane.showMessageDialog(null,"Cadena INCORRECTA","MAL!!!!",JOptionPane.WARNING_MESSAGE);
}
}
catch(NullPointerException tg){
}
}
}
// ESPERO LES SIRVA PARA PREPARARSE PARA SU EXAMEN, SUERTE, GRACIAS POR SUS COMENTARIOS
claro claro el codigo va a ser de mucha ayuda tenkiux Jimboo
ResponderEliminarokas locas, suerte para tu evaluacion
ResponderEliminar