Aiuto...Turing

di il
2 risposte

Aiuto...Turing

Ciao.. anke se non conosco molto bene il C posso darti una mano su come costruire il progetto.. sai come funzionano le macchine di Turing??.. se devi realizzare un simulatore spero di si.. cmq dovresti usare delle liste bidirezionali realizzate con puntatori in modo da inserire tutti gli stati che ti servono
il codice qui sotto è l'implementazione delle liste che ti dicevo:

struct cella{
int elemento;
struct cella *precedente, *successivo;
};

typedef struct cella *precedente, *successivo;

spero di esserti stato d'aiuto... ciaoo..

Intel

2 Risposte

  • Re: Aiuto...Turing

    Ok.. il codice che ho scritto prima rappresenta una cella di una lista.. tante celle concatenate (secondo me) possono simulare il nastro della macchina di turing.. se hai bisogno di memorizzare più di un valore nella cella, ti basta aggiungere sotto ad int elemento le altre variabili che dovrai memorizzare nella cella.. qui sotto ti scrivo un po' di codice per gestire la tua lista:

    (crea una lista vuota)
    void creaLista(lista *L){
    (*L) = (lista) malloc(sizeof(struct cella));
    (*L)>precedente = *L;
    (*L)>successivo = *L;
    }

    (controlla se la lista è vuota)
    char listaVuota(lista L){
    return(L>successivo == L);
    }

    (ritorna la posizione del primo elemento della lista)
    posizione primoLista(lista L){
    return(L>successivo);
    }

    (ritorna la posizione della cella successiva ad una posizione)
    posizione succLista(posizione p, lista L){
    return(p>successivo);
    }

    queste sono solo alcune funzioni per gestire le liste.. se credi che ti servano.. ti scrivo anke quelle per leggere e scrivere su una lista.. ciaoo....

    Intel
  • Re: Aiuto...Turing

    Ciao.. se nn ho capito male.. la struttura che hai scritto è una lista monodirezionale dove puoi andare solo in avanti.. e non all'indietro.. di quanto ne so io il nastro delle macchine di turing possono andare anche all'indietro.. cmq la tua struct la devi completare con l'istruzione:

    typedef struct istruzione *lista, *posizione;

    per inserire nuovi elementi:

    void insLista(char str, posizione p, lista L){
    struct istruzione temp;

    (*p)>successivo>precedente = (*p)>precedente;
    (*p)>precedente>successivo = (*p)>.successivo;
    temp = (*p)>successivo;
    free(*p);
    *p = temp;
    }

    Intel
Devi accedere o registrarti per scrivere nel forum
2 risposte