public string inicioMaquina(List <String> fita) { parada = false; int i = -1; posFita = 0; sw.Start(); string atual = inicial.estado; while (parada == false) { i = retornaEstados(atual, fita); if (i == -1) { string fitaLinha = ""; for (int t = 1; t < fita.Count - 1; t++) { fitaLinha = fitaLinha + fita[t]; } // Console.WriteLine("FITA LINHA -> " + fitaLinha); parada = true; //sw.Stop(); //TimeSpan tempo = sw.Elapsed; //Console.WriteLine("TEMPO -> " + tempo); return(fitaLinha + ";0"); } else { Estados aux = new Estados(); aux.estado = transicoes[i].To; if (fita[posFita] == branco && verificarEstadosFinais(aux) == true) { string fitaLinha = ""; for (int y = 1; y < fita.Count - 1; y++) { fitaLinha = fitaLinha + fita[y]; } // Console.WriteLine("FITA LINHA -> " + fitaLinha); //sw.Stop(); //TimeSpan tempo = sw.Elapsed; //Console.WriteLine("TEMPO -> " + tempo); parada = true; return(fitaLinha + ";1"); } if (fita[posFita] == inicio && verificarEstadosFinais(aux) == true) { string fitaLinha = ""; for (int y = 1; y < fita.Count - 1; y++) { fitaLinha = fitaLinha + fita[y]; } // Console.WriteLine("FITA LINHA -> " + fitaLinha); //sw.Stop(); //TimeSpan tempo = sw.Elapsed; parada = true; return(fitaLinha + ";1"); } fita[posFita] = transicoes[i].writeSymbol; atual = transicoes[i].To; if (atual.Equals("")) { parada = true; } if (transicoes[i].direction == "D") { if (fita.Count() == posFita) { fita.Add(branco); } posFita++; } else if (transicoes[i].direction == "E") { if (posFita == 0) { parada = true; } posFita--; } } } return(null); }
public void inicioMaquina() { fileMaquinaTuring(); fileEntrada(); string atual = inicial.estado; int i = 0; int posFita = 0; bool parada = false; i = 0; do { Console.Write("1"); if (transicoes[i].readSymbol.Equals(fita[posFita]) && atual.Equals(transicoes[i].From) && fita[posFita].Equals(transicoes[i].readSymbol)) { Estados aux = new Estados(); aux.estado = transicoes[i].To; //Console.WriteLine("COMECA VERIFICACAO -------------------"); if (fita[posFita] == branco && verificarEstadosFinais(aux) == true) { Console.WriteLine("ATUAL -> " + atual); Console.WriteLine("PARO BRANCO"); parada = true; } if (fita[posFita] == inicio && verificarEstadosFinais(aux) == true) { Console.WriteLine("PARO INICIO"); parada = true; } //Console.WriteLine("----------- ATUAL " + aux.estado); //Console.WriteLine(fita[posFita] + " é igual a " + branco); //Console.WriteLine(aux.estado + " contem em finais: " + finais.Contains(aux)); //Console.WriteLine("TERMINA ---------------------------------------"); Console.WriteLine("ATUAL -> " + atual); Console.WriteLine("LEU FITA -> " + fita[posFita]); Console.WriteLine("POSICAO FITA -> " + posFita); Console.WriteLine("ESCREVEU FITA ->" + transicoes[i].writeSymbol); Console.WriteLine("FOI PARA -> " + transicoes[i].To); fita[posFita] = transicoes[i].writeSymbol; atual = transicoes[i].To; if (transicoes[i].direction == "D") { posFita++; //Console.Write("DIREITA"); } else if (transicoes[i].direction == "E") { posFita--; //Console.WriteLine("Esquerda"); } }// else if (!transicoes[i].readSymbol.Equals(fita[posFita]) && !atual.Equals(transicoes[i].From) && !fita[posFita].Equals(transicoes[i].readSymbol)) { // Console.WriteLine("REJEEITO"); // parada = true; //} i++; if (i == transicoes.Count) { i = 0; } } while (parada == false); Console.Write("\n"); foreach (var a in fita) { Console.Write(a + "\n"); } }