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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2013, 19:39   #1
Otar4ik
Форумчанин
 
Регистрация: 16.04.2010
Сообщений: 123
По умолчанию Дан линейный список.Упорядочить по Температуре

Организовать линейный список показаний температуры: хранить дату
(в текстовом виде), температуру. Упорядочевать по температуре.

Честно не знаю как начать,сортировку,1-2 примера есть,но надеюсь может тут профессионалы своего дела подскажут или подкинут идею!)

Код:
program lab5_2;

uses
  formsABC;

type
rec = record
Date: string[15];
tempr: integer;
end;  
 
 Pnode = ^TNode; // указатель на элемент типа TNode
 TNode = record  // тип "запись"
 SandNb: rec;  
 next: PNode;  // указатель на след.элемент
end;

var
i:integer;
  stek: Pnode;
  s: string;
  e, h: Field;
  z, g: IntegerField;
  l, l1, l2, l3, l4: listBox;
  bt2, bt3, bt4, bt5, bt6, bt7,bt8,bt9,b10: button;


procedure AddElem;// создание списка
var
  TempElem: Pnode;
  x: rec;
begin
  new(TempElem); // выделяем место в памяти
  x.Date := e.Text;
  l1.Items.Add(x.Date);
  x.tempr := g.Value;
  l2.Items.Add(x.tempr);
  TempElem^.SandNb := x;
  TempElem^.next := stek; // ставим указатель на след.элемент
  stek := TempElem;
end;

procedure prosmotr;// вывод списка на экран
var
  TempElem: Pnode;
  x: rec; 
begin
  l3.Items.Clear();
  l4.Items.Clear();
  TempElem := stek;
  while TempElem <> nil do
  begin
    x := TempElem^.SandNb;
    l3.Items.Add(x.Date); // вывод текущего эл-та
    l4.Items.Add(x.tempr);
   tempelem := tempelem^.next; // указатель на сл. эл-т
  end;
end;


procedure Del;// удаление последнего элемента стека 
var
  p: Pnode;

begin
  p := stek;
  stek := p^.next;
  dispose(P);
  l1.Items.clear();
  l2.Items.Clear();
  
end;

procedure editel;//редактирование последнего элемента
begin
  stek^.SandNb.Date := e.Text;
  stek^.SandNb.tempr := g.Value;
  l1.Items.Clear();
  l2.Items.Clear();
end;
procedure exit;
begin
MainForm.Close;
end;

procedure main;
begin
  stek := nil;
  MainForm.SetSize(600, 400);
  MainForm.CenterOnScreen;
  e := new Field('Дата:', 140);
  g := new IntegerField('Температура:');
  Emptyspace(60);
  linebreak;
  bt3 := new Button('Ввод');
  bt3.Click += AddElem;
  bt4 := new Button('Вывод списка');
  bt4.Click += prosmotr;
  bt5 := new Button('Удалить');
  bt5.Click += Del;
  bt6 := new Button('Редактировать:');
  bt6.Click += editel;
  bt7 := new Button('Упорядочить');
  ///bt7.Click+=poradok;
  linebreak;
  l1 := new ListBox();
  l2 := new ListBox();
  Emptyspace(160);
  l3 := new ListBox();
  l4 := new ListBox();
  linebreak;
  bt8:=new Button('Выход');
  bt8.Click+=Exit;
  Emptyspace(50);
end;

begin
main;
end.

Последний раз редактировалось Otar4ik; 09.12.2013 в 19:43.
Otar4ik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Линейный список (С++) Mako-chi Помощь студентам 4 30.05.2013 12:23
ЛИНЕЙНЫЙ СПИСОК kalosha-stepa Паскаль, Turbo Pascal, PascalABC.NET 2 25.10.2012 21:57
C++,линейный список katerunechka Помощь студентам 0 08.10.2011 11:38
Линейный список doter Общие вопросы C/C++ 1 20.02.2011 21:36