Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Graciele

Lista encadeada dinamicamente

Recommended Posts

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

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 dinamicamente

Essa 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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.