Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Delphi] Реализация списка с помощью массивов 
V
    Опции темы
zarogon
Дата 4.10.2006, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 4.11.2005
Где: Украина, Киев

Репутация: нет
Всего: нет



Доброго всем времени суток. Помогите пожалуйста сделать программу для реализации операторов Inserte Delete Locate при представлении списков с помошью массивов. Вот я сделал саму форму как примерно должно быть user posted image но как программно сделать я еще не знаю  smile 

Заранее спасибо, просто я токо начал изучать делфи, а нада уже на завтра.



Это сообщение отредактировал(а) alexeis1 - 4.10.2006, 19:54
PM MAIL ICQ   Вверх
Alexeis
Дата 4.10.2006, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 23
Всего: 459



Цитата(zarogon @  4.10.2006,  19:46 Найти цитируемый пост)
представлении списков

Как реализован список? С помощю чего? Или список это просто набор слов и он еще никак не реализован?

Что за метод Locate? В чем его назначение?



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
zarogon
Дата 4.10.2006, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 4.11.2005
Где: Украина, Киев

Репутация: нет
Всего: нет



Вот я тут попробовал сделать но сами понимаете:
это сам список
Код

unit List1;

interface
uses
  Windows, Messages;
const MaxLength=20;

type
    TElement=record
       Name:string;
       Value:integer;
end;
type
    List=record
    Elements:array[1..MaxLength]of TElement;
    Last:integer;
end;
var
  BOfSetList,FoolList,NoPosition:boolean;
  i,q,k:integer;  x:TElement; L:List;

procedure AddElement(imya:string;zna4:integer);
procedure Insert(Name1:string;Value1:integer;p:integer;var L:list);
procedure Delete(p:integer;var L:List);
function Locate(x:TElement):integer;


implementation



procedure AddElement(imya:string;zna4:integer);
begin
  if L.Last=MaxLength then  FoolList:=True
  else
  begin
   for i:=L.Last to MaxLength do
    begin
      L.Elements[i].Name:=imya;
      L.Elements[i].Value:=zna4;
    end;
   end;
end;


procedure Insert(Name1:string;Value1:integer;p:integer;var L:List);

 begin
   if L.Last=MaxLength then  FoolList:=True
                       else if (p<1)or(p>L.Last) then NoPosition:=True
   else
     begin
      for q:=L.Last downto p do
       L.Elements[q+1]:=L.Elements[q];
       L.Last:=L.Last+1;
       L.Elements[p].Name:=Name1;
       L.Elements[p].Value:=Value1;
     end;
end;

procedure Delete(p:integer;var L:List);
begin
  if (p>L.Last)or (p<1)then NoPosition:=True
     else
       begin
         L.Last:=L.Last-1;
         for q:=p to L.Last do
          L.Elements[q]:=L.Elements[q+1];
       end;
end;

function Locate(x:TElement):integer;
var L:List;
begin
  for q:=1 to L.Last do
  if (L.Elements[q].Name=x.Name) and(L.Elements[q].Value=x.Value) then
  Locate:=q;
   {return(L.Last+1); }
end;


end.



а это уже программа
Код

unit Laba1ListArr;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,List1, StdCtrls, Buttons;
 type
    TElement=record
       Name:string;
       Value:integer;
end;
type
    List=record
    Elements:array[1..MaxLength]of TElement;
    Last:integer;
end;
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Label3: TLabel;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    BitBtn5: TBitBtn;
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn5Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);

  private
    { Private declarations }
  public


    { Public declarations }
  end;

var
  Form1: TForm1;
  x:Telement;i,k:integer;
  imya:string;
  zna4:integer;
implementation

{$R *.dfm}



procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  if FoolList then MessageDlg('List is full',mtInformation,mbOkCancel,0);
  if (Edit1.Text='') or (Edit2.Text='') then  MessageDlg('You should enter some value',mtInformation,mbOkCancel,0)
   else
    begin
      x.Name:=Edit1.Text;
      x.Value:=StrToInt(Edit2.Text);
      AddElement(x.Name,x.Value);
      Label3.Caption:=Label3.Caption+x.Name+'='+IntToStr(x.Value)+' ';
    end;
     L.Last:=i;
end;

procedure TForm1.BitBtn5Click(Sender: TObject);
begin
  Close;
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
   if FoolList then MessageDlg('List is full',mtInformation,mbOkCancel,0);
   L.Last:=i;
   insert('w',45,2,l);
   L.Last:=L.Last+1;
    Label3.Caption:=Label3.Caption+x.Name+'='+IntToStr(x.Value)+' ';
end;

end.


а Locate показывает в какой позиции например выбранный элемент
PM MAIL ICQ   Вверх
Kuvaldis
Дата 4.10.2006, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


механик-вредитель
***


Профиль
Группа: Участник Клуба
Сообщений: 1189
Регистрация: 16.6.2006
Где: Минск

Репутация: 32
Всего: 61



zarogon, 
Вот архив с твоей программулиной
Проверки на корректность ввода не делал (если есть желание, можешь сделать)
Упор на реализацию основных операций



Это сообщение отредактировал(а) Kuvaldis - 4.10.2006, 21:19

Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  1.zip 3,56 Kb


--------------------
Помни - когда ты спишь, враг не дремлет
Спи чаще и дольше, изматывай врага бессоницей
PM MAIL ICQ   Вверх
zarogon
Дата 4.10.2006, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 4.11.2005
Где: Украина, Киев

Репутация: нет
Всего: нет



СПАСИБО ТЕБЕ ОГРОМНЕЕШЕЕЕЕЕЕ!!!!!  smile 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0469 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.