Graciele 0 Denunciar post Postado Maio 3, 2007 Oi Pessoal...Tenho que fazer um trabanho basiado na maquina de Turing...Me indicaram fazer por lista encadeada dinamicamente...O problema é que eu não sei que raio é isso de Lista encadeada dinamicamente...Tem como vocês me ajudarem???Brigadinha... Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Maio 7, 2007 não precisa ser lista encadeada dinamicamente.a máquina de Turing é quase um automato com pilha.voce sabe o que é máquina de Turing? lista encadeada dinamicamenteEssa lista é usada quando não há como prever o tamanho ou uso de memória de algum dado, geralmente esse dado criado por voce.voce pode optar por:- especificar o tamanho máximo de um tipo, por exemplo: a máquina de Turing poderá receber 100 regras.- usar a lista encadeada e suas regras terão o limite que sua programacão desejar, ou o limite da memória de sua máquina. Compartilhar este post Link para o post Compartilhar em outros sites
Graciele 0 Denunciar post Postado Maio 7, 2007 Puxa me dei mal... Sei o que o Prof me ensinou... como funciona a máquina de Turing... Eu fiz um automato uma vez... Vou postar aki o codigo para você ver... Ai eu teria que por apenas eles em uma pilha certo??? E como eu faço isso??? Brigadinha.. #include <iostream.h>#include <stdlib.h>#include <string.h>#define tamanho 3struct EGrafos{ char fo [100]; char alfabeto_entrada [3]; int mat_transicao [3][100];};int GetIndice(char c);EGrafos g;int main(){ int num_estado, num, num2, n, n_estado, i, n_entrada, s, indice, matriz; char cadeia [100]; strlen(cadeia); cout << "Numero de Estados: "; cin >> n_estado; cout << "Determinar funcao de saida (fo): " << endl; for (num_estado=0; num_estado < n_estado; num_estado++) { cout << "S" << num_estado << ": "; cin >> g.fo [num_estado]; } cout << endl; cout << "Determine os 3 alfabetos de entrada: "; cout << endl; for (num=0; num <3; num++) { cin >> g.alfabeto_entrada[num]; } cout << endl; cout << "Transicoes: "; cout << endl; num2 = n_estado; for (n_estado=0; n_estado < num2; n_estado++) for (n_entrada=0; n_entrada < 3; n_entrada++) { cout << "S" << n_estado << " x " << g.alfabeto_entrada[n_entrada] << " : "; cin >> g.mat_transicao [n_estado][n_entrada]; } cout << endl; cout << "Digite a cadeia a ser processada: "; cout << endl; cin >> cadeia; n = strlen(cadeia); cout << "Saida: "; cout << endl; s=0; for (i = 0; i<n; i++) { cout << "( S" << s << ", " << cadeia[i] << ", S"; int s2=s; s = g.mat_transicao[s][GetIndice(cadeia[i])]; cout << s << ", " << g.fo [s2] << ")"; cout << endl; } cout << "( S" << s << ", - " << ", -"; cout << ", "<< g.fo [s] << ")"; cout << endl; system("PAUSE"); return 0;}int GetIndice(char c){ for (int i=0; i<strlen(g.alfabeto_entrada); i++) if (c == g.alfabeto_entrada[i]) return i; return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Maio 7, 2007 int mat_transicao [3][100];A sua matriz transicao "regras" será diferente.Imagine que a máquina de Turin além de ter o estado de partida, o caracter lido e o estado de chegadaela terá também uma variável que controla o deslocamento da fita: esquerda e direita e uma variável que controla a substituicão do caracter. Compartilhar este post Link para o post Compartilhar em outros sites
Graciele 0 Denunciar post Postado Maio 7, 2007 Vou tentar aki e qualquer coisa eu volto...Brigadinha Compartilhar este post Link para o post Compartilhar em outros sites