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

Тема в разделе "Delphi - FAQ", создана пользователем Ktulhu, 20 май 2007.

Статус темы:
Закрыта.
  1. Ktulhu

    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.

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

    DIR3ct0r Гость

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

    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;
     
  3. Ktulhu

    Ktulhu Гость

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

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

    GOsha Гость

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

    DIR3ct0r Гость

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

    root, cur, pItem, pred: TPtr;
     
  6. Ktulhu

    Ktulhu Гость

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

    Ktulhu Гость

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

    GOsha Гость

    Для: Ktulhu
    Ты бы уже линку на себя в википедии в подпись себе воткнул. Мож народ серьезно не относится.
    http://ru.wikipedia.org/wiki/Ктулху
    Теперь почитают и будуть бояться. ВО!
    А мне почему-то просто весело.
     
  9. Ktulhu

    Ktulhu Гость

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

    DIR3ct0r Гость

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

    Ktulhu Гость

    Переделал как понял, вышло следующее(всёравно выдаёт ошибку)
    Код (Text):
     
    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.
     
  12. DIR3ct0r

    DIR3ct0r Гость

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

    awl Гость

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

    Ktulhu Гость

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

    awl Гость

    =))))) а я не знаю, когда теперь забуду этот ужас!! =)))
    тебе везет у тя зачет, а у нас курсовик -> зачет + экзамен... =)
     
Загрузка...
Похожие Темы - Помогите студенту
  1. limbra
    Ответов:
    3
    Просмотров:
    47
  2. NylevoiChelovek
    Ответов:
    5
    Просмотров:
    113
  3. Ruska132
    Ответов:
    49
    Просмотров:
    420
  4. gURaBA_N
    Ответов:
    7
    Просмотров:
    149
  5. uxbmw3w
    Ответов:
    0
    Просмотров:
    69
Статус темы:
Закрыта.

Поделиться этой страницей