Важная информация
Показано с 1 по 3 из 3

Тема: Проблемы с интерпретатором Brainfuck

  1. #1 Проблемы с интерпретатором Brainfuck 
    Супер модератор Аватар для Kakos_nonos
    Регистрация
    07.01.2011
    Адрес
    Кубань
    Сообщений
    1,531
    Сказал(а) спасибо
    126
    Поблагодарили 428 раз(а) в 291 сообщениях
    Записей в блоге
    6
    Помогоите пожалуйста, найти ошибку в этой программе. Написал Интерпретатор Brainfuck, а он некоторые программы правильно выполняет, а некоторые нет. Hello world выполняет. И больше ничего.
    В команду Assign вводить имя выполняемого файла.
    Помогите, пожалуйста, кто знает...
    Вложения
    • Тип файла: rar BIN.rar (5.5 Кб, Просмотров: 7)
    [Ссылки могут видеть только зарегистрированные пользователи. ]
    Ответить с цитированием  
     

  2. #2  
    Супер модератор Аватар для Kakos_nonos
    Регистрация
    07.01.2011
    Адрес
    Кубань
    Сообщений
    1,531
    Сказал(а) спасибо
    126
    Поблагодарили 428 раз(а) в 291 сообщениях
    Записей в блоге
    6
    Пояснения:
    ukk-указатель комманд
    ukd-указатель данных
    uks-указатель данных

    dnn-массив данных
    prg-массив програмы
    stc-стек

    Помогите, пожалуйста, а то что-то не получается
    [Ссылки могут видеть только зарегистрированные пользователи. ]
    Ответить с цитированием  
     

  3. #3  
    Супер модератор Аватар для Kakos_nonos
    Регистрация
    07.01.2011
    Адрес
    Кубань
    Сообщений
    1,531
    Сказал(а) спасибо
    126
    Поблагодарили 428 раз(а) в 291 сообщениях
    Записей в блоге
    6
    Ошибку шашёл.
    Там стек был выражен массивом типа Byte и соответственно, не мог превышать значения 255.
    Код pascal:
    program brain;
    uses crt;
    var prg,dnn:array[1..10001] of byte;
    stc:array[1..10000]of integer;
    ukd,uks,ukk,i:integer;
    b:byte;
    f:file of byte;
    procedure emulate;
    begin
    case chr(prg[ukk]) of
    '+':begin inc(dnn[ukd]);  inc(ukk); end;
    '-':begin dec(dnn[ukd]); inc(ukk); end;
    '>':begin inc(ukd); inc(ukk); end;
    '<':begin dec(ukd); inc(ukk);  end;
    '.':begin Write(chr(dnn[ukd])); inc(ukk); end;
    ',':begin dnn[ukd]:=ord(readkey); inc(ukk); end;
    '[':if dnn[ukd]=0 then begin
     
                           i:=0;
                           repeat
                           if prg[ukk]=ord('[') then i:=i+1;
                           if prg[ukk]=ord(']') then i:=i-1;
                           ukk:=ukk+1;
                           until (i=0)or keypressed;
                           end
                      else begin
                           inc(uks);
                           stc[uks]:=ukk;
     
                           inc(ukk);
                           end;
    ']':if dnn[ukd]=0 then begin
                           inc(ukk);
                           dec(uks);
                           end
                      else ukk:=stc[uks]+1;
    #0:begin readln;  halt; end;
    else inc(ukk);
    end;{case}
    end;
     
    begin
    uks:=1;
    ukd:=1;
    ukk:=1;
     
    for i:=1 to 10000 do
    begin
    dnn[i]:=0;
    stc[i]:=0;
    prg[i]:=0;
    end;
     
    i:=1;
    assign(f,'99.b');
    reset(f);
    While not eof(f) do begin
                        read(f,b);
                        prg[i]:=b;
                        inc(i);
                        end;
    close(f);
    clrscr;
    textcolor(14);
    While not keypressed do
     emulate;
     
    readln;
    end.
    [Ссылки могут видеть только зарегистрированные пользователи. ]
    Ответить с цитированием  
     

Информация о теме
Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Калькулятор на Brainfuck
    от Dispetcher14 в разделе Другие языки программирования
    Ответов: 1
    Последнее сообщение: 22.01.2012, 14:08
  2. Проблемы трансляции.
    от Абадябер в разделе Степлер
    Ответов: 4
    Последнее сообщение: 22.11.2011, 22:39
  3. Brainfuck-интерпретатор
    от Kakos_nonos в разделе Разработки на Ассемблере
    Ответов: 5
    Последнее сообщение: 20.04.2011, 15:39
  4. Проблемы с компиляцией
    от Kakos_nonos в разделе C/C++
    Ответов: 0
    Последнее сообщение: 21.02.2011, 20:09
  5. Опять проблемы
    от Dispetcher14 в разделе Портативные компьютеры
    Ответов: 4
    Последнее сообщение: 13.02.2011, 17:54
Ваши права
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •