• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Помогите студенту =)

  • Автор темы Ktulhu
  • Дата начала
Статус
Закрыто для дальнейших ответов.
K

Ktulhu

Задание:
Дан список В, который состоит из записей: первое поле - слова из 10 букв, второе - адреса следующего элемента. Составить подпрограмму для удаления последнего элемента списка.

unit Unit1;

interface

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

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
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);
type
TPtr=^TElem;
TElem=Record
inf:integer;
next:TPtr;
end;
var
B,Beg,fin,buf:TPtr;
n:byte;
begin
n:=10;
randomize;
new:));
new(B^.next);
B^.next^.inf:=random(2000)-1000;
fin:=fin^.next;
fin^.next:=nil;
B:=Beg;
while B^.next<>fin do
B:=B^.next;
buf:=fin^.inf; // Тут выдаёт [Error] Unit1.pas(52): Incompatible types: 'Integer' and 'TPtr'
dispose(fin);
fin:=B;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
mmo:TMemo;
begin

mmo.clear;
end;

end.

Помогите решить пожалуста
 
D

DIR3ct0r

Код:
// создаем список

new(root); // начало списка
root^.Inf:= Random(1000);
root^.next:= nil;

cur:= root;
for i:= 1 to 10 do
begin
new(pItem);
pItem^.Inf:= Random(1000);
pItem^.next:= nil;
cur^.next:= pItem;
cur:= pItem; 
end;

// а теперь удаляем последний
cur:= root;
pred:= nil;
while Assigned(cur^.next) do
begin
pred:= cur;
cur:= cur^.next;
end;
if Assigned(Pred) then 
begin
Dispose(Pred^.next);
Pred^.next:= nil;
end;
 
K

Ktulhu

как обьявить pItem? :)

И вобще если нетрудно обьявите пожалуста все переменные, ато я запутался
 
G

GOsha

Для: Ktulhu
Еще один осьминог с человеческим телом и рудиментарными крыльями. Откуда вас столько развелось?
 
D

DIR3ct0r

все типы из твоего кода взяты

root, cur, pItem, pred: TPtr;
 
K

Ktulhu

Для: DIR3ct0r
Спасибо
Для: GOsha
Грядёт возрождение, мы предвестники :(
 
K

Ktulhu

Программа запускается, но при нажатии кнопки ничего не происходит
 
G

GOsha

Для: Ktulhu
Ты бы уже линку на себя в википедии в подпись себе воткнул. Мож народ серьезно не относится.

Теперь почитают и будуть бояться. ВО!
А мне почему-то просто весело.
 
K

Ktulhu

Мне вобще пофигу)))) Просто написал что первое в голову пришло
 
D

DIR3ct0r

я так понимаю, что ты запустил программу, так как она написана, что ты тогда ожидал увидеть?
 
K

Ktulhu

Переделал как понял, вышло следующее(всёравно выдаёт ошибку)
Код:
unit Unit1;

interface

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

type

TPtr=^TElem;
TElem=Record
inf:integer;
next:TPtr;
end;
TForm1 = class(TForm)
Button1: TButton;
mmo1: TMemo;
Label1: TLabel;
Button2: TButton;
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
root,pItem,cur:TPtr;
i:byte;
begin


// создаем список

new(root); // начало списка
root^.Inf:= Random(1000);
root^.next:= nil;

cur:= root;
for i:= 1 to 10 do
begin
new(pItem);
pItem^.Inf:= Random(1000);
pItem^.next:= nil;
cur^.next:= pItem;
cur:= pItem;

end;
begin   //вывод элементов
cur:= root;
while (cur<>nil) do
begin
write(cur^.inf,' ');
cur:=cur^.next;
end;
end;
end;




procedure TForm1.Button2Click(Sender: TObject);
var
root,pred,cur:TPtr;

begin
// а теперь удаляем последний
cur:= root;
pred:= nil;
while Assigned(cur^.next) do
begin
pred:= cur;
cur:= cur^.next;
end;
if Assigned(Pred) then
begin
Dispose(Pred^.next);
Pred^.next:= nil;
end;
end;

end.
 
D

DIR3ct0r

ошибка, потому что переменная root должна быть глобальной
 
A

awl

Для: Ktulhu
Подскажите, пожайлуста, как реализовать функцию GetValueCount и для чего она служит?
 
K

Ktulhu

Непомню...я как зачёт получил позабывал всё от радости :D
 
A

awl

=))))) а я не знаю, когда теперь забуду этот ужас!! =)))
тебе везет у тя зачет, а у нас курсовик -> зачет + экзамен... =)
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!