Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.06.2008, 18:01   #1
Kreaman
 
Регистрация: 11.06.2008
Сообщений: 7
Вопрос Составить линейный список, Среда Delphi

Помогите написать процедуру!

Вот само задание!

Составить линейные список, состоящий из 20 элементов вещественного типа (это уже сделал). Помогите с этой частью задания ( Посчитать количество элементов больших чем значение заданной переменной С! )

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls;
const
  max = 20;
type
    Ptr=^Spisok;

  Spisok = record
    info: integer;
    next: ptr;
  end;

  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Label1: TLabel;
    SG: TStringGrid;
    Button4: TButton;
    Button5: TButton;
    procedure Button3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

  curPtr: ptr;
  start: ptr;
  last: ptr;
  a:integer;

implementation

{$R *.dfm}

procedure TForm1.Button3Click(Sender: TObject);
begin
close
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
   start := nil;
   last := nil;
end;

procedure TForm1.Button1Click(Sender: TObject);
var i : byte;

begin
if Edit1.Text <> '' then
  begin
  a:= strtoint (Edit1.Text);
  new(curPtr);

   if last = nil then
     begin
      start := curPtr;
      last := curPtr;
      curPtr^.info := a;
      curPtr^.next := nil;
     end
     else
       begin
         last^.next:= curPtr;
         curPtr^.info:= a;
         curPtr^.next:= nil;
         last := curPtr;
       end;
  i:= 0;
  curPtr:=start;

  while curPtr <> nil do
    begin
      SG.Cells[i,0]:= inttostr(curPtr^.info);
      curPtr:= curPtr^.next;
      inc(i);
    end;

  Edit1.Text:='';
end;
end;


procedure TForm1.Button2Click(Sender: TObject);




""Вот эту процедуру!!!""




procedure TForm1.Button4Click(Sender: TObject);
var i:byte;
begin
if Edit1.Text <> '' then
  begin
  a:= strtoint (Edit1.Text);
  new(curPtr);

   if last = nil then
     begin
      start := curPtr;
      last := curPtr;
      curPtr^.info := a;
      curPtr^.next := nil;
     end
     else
       begin
         curPtr^.next:= start;
         curPtr^.info:= a;
         start := curPtr;
       end;
  i:= 0;
  curPtr:=start;

  while curPtr <> nil do
    begin
      SG.Cells[i,0]:= inttostr(curPtr^.info);
      curPtr:= curPtr^.next;
      inc(i);
    end;

  Edit1.Text:='';
end;
end;

procedure TForm1.Button5Click(Sender: TObject);
const  c = 3;
var
i:byte;
itemPrev: Ptr;
begin
   if Edit1.Text <> '' then
  begin
    new (curPtr);

    a := strtoint (Edit1.Text);

    itemPrev := start;

    for i:=1 to (c-2) do
      itemPrev := itemPrev^.next;

    curPtr^.next := ItemPrev^.next;
    itemPrev^.next := curPtr;
    curPtr^.info := a;

  i:= 0;
  curPtr:=start;

  while curPtr <> nil do
    begin
      SG.Cells[i,0]:= inttostr(curPtr^.info);
      curPtr:= curPtr^.next;
      inc(i);
    end;
     Edit1.Text:='';
  end;

end;

end.
Изображения
Тип файла: jpg clip_image002.jpg (51.7 Кб, 161 просмотров)
Kreaman вне форума Ответить с цитированием
Старый 11.06.2008, 19:54   #2
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Код:
procedure TForm1.Button2Click(Sender: TObject);
const C = 5;
var p:ptr;
    count, C : integer;
begin
   C := strtoint(Edit2.Text);
   count := 0;
   p := Start;
   while p <> nil do begin
      if p^.info > C then begin
         inc(count);
      end;
      p := p^.next;
   end;
   label1.Caption := Format('количество элементов > %d = %d', [C, count]);
end;
alexBlack вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кольцевой линейный список Seafulf Паскаль, Turbo Pascal, PascalABC.NET 7 16.11.2013 20:02
Линейный двунаправленный список Seg_62 Паскаль, Turbo Pascal, PascalABC.NET 4 28.08.2008 21:02
Помогите пож-та.Паскаль. Линейный односвязный список (ЛОС) tonich Паскаль, Turbo Pascal, PascalABC.NET 1 25.02.2008 21:55
Линейный список Black_Ak24 Паскаль, Turbo Pascal, PascalABC.NET 2 04.01.2008 15:00