practice/c/TuringMachine/declaration.h

52 lines
2.2 KiB
C

#ifndef DECLARATION_H
#define DECLARATION_H
#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#define ENTER 10
typedef struct {
int number;
int state1; //Тут сохраняется индекс состояния, при котором выплоняется команд, в массиве states
int symbol1; //Тут сохраняется индекс символа, при котором выплоняется команд, в массиве symbols
int symbol2; //Тут сохраняется индекс символа, который нужен записать в ячейку, в массиве symbols
char dir; //просто направление сдвига головки
int state2; //Тут сохраняется индекс состояния, в которое нужно перейти, в массиве states
} command;
typedef struct tapeT tapeT;
struct tapeT {
int symbol;
tapeT *left;
tapeT *right;
};
typedef struct {
int statesNumb; // кол-во используемых состояний
char *states;//множество состояний
int symbolsNumb;// кол-во используемых символов
char *symbols;//альфавит
int state;// состояние в головке
int commandsNumb;//число команд
command *commands;//команды
tapeT *tape;// лента
} turing;
int menu(int lastNumb);
int stateIndex(turing *t, char state); //нахождение номер индекса состояния state в states
int symbolIndex(turing *t, char symbol); //нахождение номер индекса symbol в symbols
void loadCommand(turing *t, char *nameFile); //загрузка команд из текстового файла
command findCommand(turing *t, char stateCurrent, char symbolCurrent);//нахождение нужной команды из список всех команд
void run(turing *t, bool step, char *nameFile);
void loadDescription(turing *t, char *nameFile); //загрузка описание машины из текстового файла
#endif