/*****************************/ /** Eprog Bsp. 1005, mittel **/ /** By Ernst Schwartz **/ /** MatNr. 0004444 **/ /** Ernst_Schwartz@gmx.at **/ /*****************************/ import eprog.*; public class boolsyn extends EprogIO { public static final char[] possibleSymbols = { '(', ')', 'a', 'b', 'c', 'V', '&', '-', '=' }; public static String input; public static char[] arrayInput; static boolean checkPossibleSymbols(char[] arrayInput) { int errorCount = 0; for (int i = 0; i<arrayInput.length; i++) { for (int j = 0; j < possibleSymbols.length; j++) { if (arrayInput[i] != possibleSymbols[j]) errorCount++; else break; } if (errorCount >= possibleSymbols.length) return true; else errorCount = 0; } return false; } // end of checkPossibleSymbols static boolean checkLastSymbol(char[] arrayInput) { if ( (arrayInput[arrayInput.length-1]) != ('=') ) return true; else return false; } // end of checkLastSymbol static boolean checkMinVariables(char[] arrayInput) { int variablesCount = 0, junktorsCount= 0; for (int i = 0; i<arrayInput.length; i++) { if (arrayInput[i] == 'a' || arrayInput[i] == 'b' || arrayInput[i] == 'c') variablesCount++; if (arrayInput[i] == 'V' || arrayInput[i] == '&') junktorsCount++; } if (variablesCount < 2 || junktorsCount < 1) return true; else return false; } // end of checkMinVariables static boolean checkKlammern(char[] arrayInput) { int offeneKlammernCount = 0; for (int i = 0; i<arrayInput.length; i++) { if (arrayInput[i] == '(') offeneKlammernCount++; else if (arrayInput[i] == ')') offeneKlammernCount--; if (offeneKlammernCount < 0) return true; } if (offeneKlammernCount != 0) return true; else return false; } // end of checkKlammern static boolean checkFolge1(char[] arrayInput) { boolean error = false; for (int i = 0; i < (arrayInput.length-1); i++) { if (arrayInput[i] == 'a' || arrayInput[i] == 'b' || arrayInput[i] == 'c' || arrayInput[i] == ')') { if (arrayInput[i+1] != ')' && arrayInput[i+1] != '=' && arrayInput[i+1] != 'V' && arrayInput[i+1] != '&') { error = true; break; } else error = false; } } return error; } // end of checkFolge1 static boolean checkFolge2(char[] arrayInput) { boolean error = false; for (int i = 0; i < (arrayInput.length-1); i++) { if (arrayInput[i] == 'V' || arrayInput[i] == '&' || arrayInput[i] == '-' || arrayInput[i] == '(') { if ( arrayInput[i+1] != 'a' && arrayInput[i+1] != 'b' && arrayInput[i+1] != 'c' && arrayInput[i+1] != '(' && arrayInput[i+1] != '-' ) { error = true; break; } else error = false; } } return error; } // end of checkFolge2 static boolean runCheckUp(char[] arrayInput) { boolean error = false; if ( checkPossibleSymbols(arrayInput) || checkLastSymbol(arrayInput) || checkMinVariables(arrayInput) || checkKlammern(arrayInput) || checkFolge1(arrayInput) || checkFolge2(arrayInput) ) error = true; return error; } public static void main (String args[]) { input = readWord(); arrayInput = input.toCharArray(); if (runCheckUp(arrayInput)) println("FALSCHE EINGABE"); else println("OK"); } // end of main; } // end of clas boolsyn;