Dodaj do ulubionych

Pascal Delphi - Maszyna Turinga pomocy

31.01.06, 06:48
Witam wszystkich mam napisać projekt na zaliczenie, mianowicie chodzi o
zasade działania maszyny TURINGA, użytkownik w programie wprowadza do komórek
A0, A1, B0 i B1 swoje wartości, taśma przesówa sie tylko w jedną strone - w
prawo. następnie wpisuje stan początowy składający sie z 0 i 1, i wybieram np
stan A od którego zaczynam. i to tyle. napisałem już w delphi jako aplikacja
konsolowa tyle:

Var
stanwej, i : Integer;
A0, A1, B0, B1 : String[2];
stanpocz : String;
A,B : String;
Begin

Writeln ('Program obrazujacy dzialanie maszyny Turinga');
Writeln;
Write ('Wprowadz wartosc do komurki A0 : ');
Readln (A0);
Write ('Wprowadz wartosc do komurki A1 : ');
Readln (A1);
Write ('Wprowadz wartosc do komurki B0 : ');
Readln (B0);
Write ('Wprowadz wartosc do komurki B1 : ');
Readln (B1);
Writeln;

Writeln ('-----------------');
Writeln ('| | A | B |');
Writeln ('-----------------');
Writeln ('| 0 | ',A0,'R | ' ,B0, 'R |');
Writeln ('-----------------');
Writeln ('| 1 | ',A1,'R | ' ,B1, 'R |');
Writeln ('-----------------');
Writeln;

Write ('Podaj stan wejsciowy skladajacy sie z 0 i 1 : ');
Readln (stanwej);
Writeln;

Write ('Wybierz stan od ktorego chcesz zaczac: A czy B ?? ');
Readln (stanpocz);
IF (stanpocz='A') OR (stanpocz='B') THEN
Writeln ('WYBRALES STAN',stanpocz) ELSE
BEGIN
REPEAT
Writeln ('Podales bledny stan!!!');
Write ('Wybierz stan od ktorego chcesz zaczac: A czy B ?? ');
Readln (stanpocz);
UNTIL ((stanpocz='A') OR (stanpocz='a')) OR ((stanpocz='B') OR
(stanpocz='b'));
END;
Readln;
end.

i nie wiem co dalej. a obiektowo napisałem tyle:

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Label1: TLabel;
RB1: TRadioButton;
RB2: TRadioButton;
Label2: TLabel;
Label3: TLabel;
Edit2: TEdit;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
A0: TEdit;
A1: TEdit;
B1: TEdit;
B0: TEdit;
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var wynik,lancuch: string;
z1,z2,z3,z4,l1,l2,l3,l4: string;
i: integer;
begin
z1:=A0.Text[1];
z2:=A1.Text[1];
z3:=B0.Text[1];
z4:=B1.Text[1];
l1:=A0.Text[2];
l2:=A1.Text[2];
l3:=B0.Text[2];
l4:=B1.Text[2];
wynik:=Edit2.Text;
lancuch:=Edit1.Text;
for i:=1 to Length(lancuch) do
begin
If RB1.Checked=True Then
begin
wynik:=wynik+l2;
if z1='B' then
wynik:=wynik+l1;
end;
end;
Edit2.Text:=wynik;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Close;
end;

end.

ale tyświetla mi same 1 i tez nie wiem co dalej

JEŻELI KTOS MI MOŻE POMÓC BEDE BARDZO WDZIĘCZNY.
Obserwuj wątek
    • tomrutko Re: Pascal Delphi - Maszyna Turinga pomocy 09.02.06, 14:31
      hmmm, z tego co wiem;-) to maszyna turinga prócz taśmy wejściowej ma stany i
      funkcję(tablicę) przejść, więc na prawde ciężko zrozumieć o co ci chodzi z tymi
      A0,A1... . Może to ma jednak być DFA a nie maszyna Turinga? i po prostu masz te
      stany A0,A1 itd. W każdym razie tak czy siak potrzebujesz tablicy przejść lub
      jakiejś funkcji przejścia. Jak napiszesz dokładnie o co chodzi (może treść
      dokładną zadania;-) ) to się może skuszę. mały hint jak robisz if
      cośtam.Checked to nie trzeba tego do True przyrównywać bo to już jest typu
      Boolean

Nie masz jeszcze konta? Zarejestruj się


Nakarm Pajacyka