1. Наш канал codeby в telegram. Пишем об информационной безопасности, методах защиты информации, о программировании. Не пропускай новости с кодебай, будь в тренде ! Подробнее ...

    Скрыть объявление

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

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

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

    Ktulhu Гость

    Репутация:
    0
    Задание:
    Дан список В, который состоит из записей: первое поле - слова из 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 Гость

    Репутация:
    0
    Код:
     
    // создаем список
    
    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 Гость

    Репутация:
    0
    как обьявить pItem? :)

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

    GOsha Гость

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

    DIR3ct0r Гость

    Репутация:
    0
    все типы из твоего кода взяты

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

    Ktulhu Гость

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

    Ktulhu Гость

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

    GOsha Гость

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

    Ktulhu Гость

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

    DIR3ct0r Гость

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

    Ktulhu Гость

    Репутация:
    0
    Переделал как понял, вышло следующее(всёравно выдаёт ошибку)
    Код:
     
    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 Гость

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

    awl Гость

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

    Ktulhu Гость

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

    awl Гость

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

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