Member 14753870 Ответов: 2

Кто-нибудь знает решение этой проблемы? Завершился с кодом 216


Здравствуйте, это моя программа о lifo animation, там нет синтаксической ошибки, но когда я хочу попробовать меню номер 2, там есть код выхода 216. кто-нибудь может мне помочь? спасибо.

program SLL_LIFO;
uses crt;
type
        pointermhs = ^recmhs;
        recmhs = record
        huruf : char;
        berikut : pointermhs;
end;

var kepala, ekor, isi : pointermhs;
pil : integer;
i   : longint;
n   : byte;

procedure buat_simpul_lifo;
begin
        new(isi);
        if kepala=nil then
                isi^.berikut := nil
        else
                isi^.berikut := kepala;
        kepala:=isi;
end;

procedure menu;
begin
gotoxy(1,1);

        writeln('MENU PROGRAM');
        writeln('1. Masuk');
        writeln('2. Keluar');
        gotoxy(1,4); writeln('3. Selesai');
        gotoxy(17,12); writeln('===============================');
        gotoxy(17,14); writeln('===============================');

        write('pilih nomor :');readln(pil);

end;

procedure Entry;
var i :byte;
begin

        inc(n);
        buat_simpul_lifo;
        write('huruf :');readln(isi^.huruf);
        for i := 8 to 47-n*3 do
        begin
                delay(30);
                gotoxy(i,13);write('  ',isi^.huruf);
        end;
        readkey;
end;

procedure hapus;
var i:longint;
n:byte;
begin

        for i:= 47-n*3 downto 8 do
        begin
                delay(30);
                gotoxy(i,13);write('  ');write(isi^.huruf);
        end;
        dec(n);
        dispose(isi);
        isi:=kepala;
        readkey;

end;


begin
clrscr;
n:=0;

                repeat
                {clrscr;}
                menu;
                kepala:=nil;
                ekor:=nil;
                CASE PIL OF
                        1 : Entry;
                        2 : hapus;
                        3 : exit;


                END;
        until pil =4;

END.


Что я уже пробовал:

program SLL_LIFO;
uses crt;
type
        pointermhs = ^recmhs;
        recmhs = record
        huruf : char;
        berikut : pointermhs;
end;

var kepala, ekor, isi : pointermhs;
pil : integer;
i   : longint;
n   : byte;

procedure buat_simpul_lifo;
begin
        new(isi);
        if kepala=nil then
                isi^.berikut := nil
        else
                isi^.berikut := kepala;
        kepala:=isi;
end;

procedure menu;
begin
gotoxy(1,1);

        writeln('MENU PROGRAM');
        writeln('1. Masuk');
        writeln('2. Keluar');
        gotoxy(1,4); writeln('3. Selesai');
        gotoxy(17,12); writeln('===============================');
        gotoxy(17,14); writeln('===============================');

        write('pilih nomor :');readln(pil);

end;

procedure Entry;
var i :byte;
begin

        inc(n);
        buat_simpul_lifo;
        write('huruf :');readln(isi^.huruf);
        for i := 8 to 47-n*3 do
        begin
                delay(30);
                gotoxy(i,13);write('  ',isi^.huruf);
        end;
        readkey;
end;

procedure hapus;
var i:longint;
n:byte;
begin

        for i:= 47-n*3 downto 8 do
        begin
                delay(30);
                gotoxy(i,13);write('  ');write(isi^.huruf);
        end;
        dec(n);
        dispose(isi);
        isi:=kepala;
        readkey;

end;


begin
clrscr;
n:=0;

                repeat
                {clrscr;}
                menu;
                kepala:=nil;
                ekor:=nil;
                CASE PIL OF
                        1 : Entry;
                        2 : hapus;
                        3 : exit;


                END;
        until pil =4;

END.

2 Ответов

Рейтинг:
2

Richard MacCutchan

У вас нет никакого явного возвращаемого значения в вашем основном коде, поэтому код выхода будет каким-то случайным значением: например, 216. Попробуйте изменить вариант 3 с

3: exit;

к
3: Exit(0);


Рейтинг:
0

OriginalGriff

Компиляция не означает, что ваш код верен! :смеяться:
Подумайте о процессе разработки как о написании электронного письма: успешная компиляция означает, что вы написали электронное письмо на правильном языке - например, на английском, а не на немецком, - а не то, что письмо содержало сообщение, которое вы хотели отправить.

Итак, теперь вы входите во вторую стадию разработки (на самом деле это четвертая или пятая, но вы перейдете к более ранним стадиям позже): тестирование и отладка.

Начните с рассмотрения того, что он делает, и как это отличается от того, что вы хотели. Это важно, потому что это дает вам информацию о том, почему он это делает. Например, если программа предназначена для того, чтобы позволить пользователю ввести число, а он удваивает его и печатает ответ, то если ввод / вывод был таким:

Input   Expected output    Actual output
  1            2                 1
  2            4                 4
  3            6                 9
  4            8                16
Тогда совершенно очевидно, что проблема заключается в бите, который удваивает его - он не прибавляет себя к себе или умножает его на 2, он умножает его на себя и возвращает квадрат входного сигнала.
Таким образом, вы можете посмотреть на код, и очевидно, что он находится где-то здесь:
int Double(int value)
   {
   return value * value;
   }

Как только у вас появится идея, что может пойти не так, начните использовать отладчик, чтобы выяснить, почему. Поместите точку останова в первую строку метода и запустите приложение. Когда он достигнет точки останова, отладчик остановится и передаст управление вам. Теперь вы можете запускать свой код построчно (так называемый "одноступенчатый") и просматривать (или даже изменять) содержимое переменных по мере необходимости (черт возьми, вы даже можете изменить код и повторить попытку, если вам это нужно).
Подумайте о том, что должна делать каждая строка кода перед ее выполнением, и сравните это с тем, что она действительно делала, когда вы использовали кнопку "Step over" для выполнения каждой строки по очереди. Он сделал то, что вы ожидали? Если да, то переходите к следующей строке.
Если нет, то почему? Чем это отличается?
Надеюсь, это поможет вам определить, в какой части этого кода есть проблема и в чем она заключается.
Это навык, и его стоит развивать, поскольку он помогает вам как в реальном мире, так и в развитии. И, как и все навыки, он только улучшается при использовании!