




/*/
BBB --> ABB


abbbaaaaabababbbbbbbbbaaabbaabababbba
aabbaaaaababaaaaaaaabbaaabbaababaabba

/*/
#include <conio.h>
#include <iostream.h>
#include <dos.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "mouse.c"
char TuLENT[80];
char TuLENT_o[80];

int pos=1, menuitem=0;
char mem1, mem2;

void cupos(int posit, char *TheLent)
{
//printf("\nПозиция    |    Значение\n");
  //printf("\n  %2i      |    %c", posit, TheLent);
  printf("\n  %02i      |     %s", posit, TheLent);
  //gotoxy(1, wherey()-1);
delay(50);
}

int mseXY()
{
if(mousecoord(0, 6*8, 13*8-1, 7*8-1))return 1; else return 0;
}

int msXY(int tx, int ty, int tx1, int ty1)
{
if(mousecoord(tx*8, ty*8, tx1*8-1, ty1*8-1))return 1; else return 0;
}

void main()
{

/////////////////////////////////////////////////////////
clrscr();
printf("Сема, будем проверять машину Тьюринга?\n\
Выбери Ответ мышкой =)\n");
_setcursortype(_NOCURSOR);
mouse(1);


MouseDown:
do
{
gotoxy(1, 5);
mStatus();
printf("       Позиция курсора: ");printf("%03ix%03i  \n",mouse_x,mouse_y);

gotoxy(1, 7);
if(!mseXY())
printf("[ Да будем! ]");
else
printf("[-Да будем!-]");

gotoxy(24, 7);
if(!msXY(23, 6, 23+20, 7))
printf("[ Нет, хочу спать! ]");
else
printf("[-Нет, хочу спать!-]");

}
while((mouse_but!=1)||(!mseXY())&&(!msXY(23, 6, 23+20, 7)));

MouseUP:
do
{
mStatus();
gotoxy(1, 5);
printf("       Позиция курсора: ");printf("%03ix%03i  \n",mouse_x,mouse_y);

gotoxy(1, 7);
if(!mseXY())
printf("[ Да будем! ]");
else
printf("[=Да будем!=]");


gotoxy(24, 7);
if(!msXY(23, 6, 23+20, 7))
printf("[ Нет, хочу спать! ]");
else
printf("[=Нет, хочу спать!=]");


gotoxy(1, 6);
}
while( ((mouse_but==1)&&((mseXY())||(msXY(23, 6, 23+20, 7)))) );

menuitem=0;

if (mseXY())
menuitem=2;

if (msXY(23, 6, 23+20, 7))
menuitem=1;


switch(menuitem)
{
case 0:
goto MouseDown;
case 1:
mouse(0);
_setcursortype(_NORMALCURSOR);
clrscr();
printf("Спокойной ночи, Cема, Желаю приятных сннн, Тьюринг бузет завтра=)\n\n");
if(!getch())getch();
exit(0);
case 2:
;
}

mouse(0);
gotoxy(1,3);
textbackground(0);
textcolor(0);
printf("                                                        \n\
								\n\
								\n\
								\n\
								\n");
textcolor(7);
gotoxy(0,6);
_setcursortype(_NORMALCURSOR);
//if (!getch())getch();

/////////////////////////////////////////////////////////

clrscr();
printf("Лента Машины Тьюринга. Ввдите ленту, состоящую из букв A и B (лат):\n");
cin >> TuLENT;
strcat(TuLENT, "*");
strcpy(TuLENT_o, TuLENT);
strcpy(TuLENT, "*");
strcat(TuLENT, TuLENT_o);
strcpy(TuLENT_o, TuLENT);
clrscr();
printf("Начальное значение ленты для машины Тьюринга:\n");
printf("%s\n", TuLENT);


printf("\nПроцесс преобразования BBB-->ABB:\n\n");
//printf("\n  %0i       |    %c", pos, TuLENT);
printf("Позиция   |Значение");

cupos(pos, TuLENT);

Q1:
    if((TuLENT[pos]=='a')||(TuLENT[pos]=='A')) {pos++; goto Q1;}
    if((TuLENT[pos]=='b')||(TuLENT[pos]=='B')) {pos++; goto Q2;}
    if((TuLENT[pos]=='*')||(TuLENT[pos]=='*')) {pos--; goto Q6;}


Q2:
    if((TuLENT[pos]=='a')||(TuLENT[pos]=='A')) {pos++; goto Q1;}
    if((TuLENT[pos]=='b')||(TuLENT[pos]=='B')) {pos++; goto Q3;}
    if((TuLENT[pos]=='*')||(TuLENT[pos]=='*')) {pos--; goto Q6;}

Q3:
    if((TuLENT[pos]=='a')||(TuLENT[pos]=='A')) {pos++; goto Q1;}
    if((TuLENT[pos]=='b')||(TuLENT[pos]=='B')) {pos--; goto Q4;}
    if((TuLENT[pos]=='*')||(TuLENT[pos]=='*')) {pos--; goto Q6;}

Q4:
    if((TuLENT[pos]=='a')||(TuLENT[pos]=='A')) {}
    if((TuLENT[pos]=='b')||(TuLENT[pos]=='B')) {pos--; goto Q5;}
    if((TuLENT[pos]=='*')||(TuLENT[pos]=='*')) {}


Q5:
    if((TuLENT[pos]=='a')||(TuLENT[pos]=='A')) {}
    if((TuLENT[pos]=='b')||(TuLENT[pos]=='B')) {TuLENT[pos]='A'; cupos(pos, TuLENT); pos++; goto Q1;}
    if((TuLENT[pos]=='*')||(TuLENT[pos]=='*')) {}


Q6:
    if((TuLENT[pos]=='a')||(TuLENT[pos]=='A')) {pos--; goto Q6;}
    if((TuLENT[pos]=='b')||(TuLENT[pos]=='B')) {pos--; goto Q6;}
    if((TuLENT[pos]=='*')||(TuLENT[pos]=='*')) {pos++; goto Qz;}

Qz:

    gotoxy(1, wherey()+2);
    printf("\nЛента Машины Тьюринга:\n");
    printf("До:    %s\n", TuLENT_o);
    printf("После: %s\n", TuLENT);

if (!getch())getch();
}