Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Классы, Создать класс 
:(
    Опции темы
aleksandrfnsv1
Дата 27.4.2008, 08:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 5.4.2008

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



 У меня есть класс
 Trup = class
private
 kol:integer;
size:integer;
prioritet:integer;
public
 constructor Create (kol:integer; size:integer; prioritet:integer);
 почему делфа ругается и как сделать правильно smile   smile  smile  smile  smile  smile 

PM MAIL   Вверх
volvo877
Дата 27.4.2008, 08:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

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



Цитата(aleksandrfnsv1 @  27.4.2008,  07:37 Найти цитируемый пост)
почему делфа ругается

Потому что у тебя уже есть поля класса с именами kol, size и prioritet, а ты определяешь еще и параметры конструктора с теми же именами...

Цитата(aleksandrfnsv1 @  27.4.2008,  07:37 Найти цитируемый пост)
как сделать правильно
Ну, например, вот так:
Код

Trup = class
private
  kol:integer;
  size:integer;
  prioritet:integer;
public
  constructor Create(Akol:integer; Asize:integer; Aprioritet:integer);

PM MAIL   Вверх
aleksandrfnsv1
Дата 27.4.2008, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 5.4.2008

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



Спасибо это сработало, а как сделать сортировку массива по свойству класса приоритет
Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  type
  TPismo = class
         private
         kolp,size,prioritet:integer;
         public
        constructor Create (akolp,asize,aprioritet:integer);
         function GetPrioritet(aprioritet:integer):integer;
        // procedure SetPrioritet(aprioritet:integer);
  end;
  const L=18;
var
  Form1: TForm1;
  mas:array [1..L] of TPismo;
  i:integer;
  masel:Tpismo;

implementation

{$R *.dfm}
        constructor TPismo.Create (akolp,asize,aprioritet:integer);
        begin
        randomize;
        kolp:=random(100);
        size:=random(67);
        prioritet:=random(3);
        //if prioritet<=3 then
          //begin

          //end;


        end;
   // procedure TPismo.SetPrioritet(aprioritet:integer);
   // begin
   // randomize;
     //   prioritet:=random(3);
   // end;
     
                     function TPismo.GetPrioritet(aprioritet:integer):integer;
                     begin
                         result:=prioritet;
                     end;


procedure TForm1.FormCreate(Sender: TObject);
begin
Memo1.Clear;
for i:=1 to L do
begin
mas[i]:=TPismo.Create(random(34),random(40),random(3));

 // ShowMessage('ghbjhbntn'+mas[i]);  //'Имя: ' + inttostr(kolp) + '  приоритет: ' + inttostr(prioritet));

 end;
//if mas[i].prioritet<=3 then
//begin
  //  masel:=mas[i];
   // mas[i]:=mas[i+1];
    //mas[i+1]:=masel;
//end;

end;





end.



PM MAIL   Вверх
THandle
Дата 27.4.2008, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

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



Ох... Кто ж учит то код так оформлять? smile 

Код

constructor TPismo.Create(akolp,asize,aprioritet:integer);
begin
  randomize;
  kolp:=random(100);
  size:=random(67);
  prioritet:=random(3);
  //if prioritet<=3 then
  //begin
  //end;
end;




А на кой конструктору параметры коль они не используется?

Может быть так?


Код

constructor TPismo.Create(akolp,asize,aprioritet:integer);
begin
  randomize;
  kolp:=akolp;
  size:=asize;
  prioritet:=aprioritet;
  //if prioritet<=3 then
  //begin
  //end;
end;




Как мне кажется так правильно, так как дальше идет такой вызов:

Код

mas[i]:=TPismo.Create(random(34),random(40),random(3));





Вот тебе пузырьковая сортировка:
Код


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    Memo2: TMemo;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

type
  TPismo = class
    private
      kolp, size, prioritet:integer;
    public
      constructor Create (akolp,asize,aprioritet:integer);
      function GetPrioritet(aprioritet:integer):integer;
      // procedure SetPrioritet(aprioritet:integer);
  end;

const
  L = 18;

var
  Form1 : TForm1;
  mas : array [1..L] of TPismo;
  i : integer;

implementation

{$R *.dfm}
constructor TPismo.Create(akolp,asize,aprioritet:integer);
begin
  randomize;
  kolp:=akolp;
  size:=asize;
  prioritet:=aprioritet;
  //if prioritet<=3 then
  //begin
  //end;
end;

function TPismo.GetPrioritet(aprioritet:integer):integer;
begin
  result := prioritet;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Memo1.Clear;
  for i:=1 to L do
    begin
      mas[i]:=TPismo.Create(random(34),random(40),random(3));
      memo1.Lines.Add(IntToStr(mas[i].prioritet));
    end;
end;

procedure Swap(iPos1, iPos2 : integer);
var
  tmp : TPismo;
begin
  tmp := mas[iPos1];
  mas[iPos1] := mas[iPos2];
  mas[iPos2] := tmp;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i, j : integer;
begin
  for i := 1 to L - 1 do
    for j := 1 to L - i do
      if mas[j].prioritet > mas[j+1].prioritet then
         swap(j, j + 1);

  for i := 1 to L do
    memo2.Lines.Add(IntToStr(mas[i].prioritet));
end;

end.


В аттаче проект.

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  sort.rar 165,90 Kb
PM   Вверх
aleksandrfnsv1
Дата 27.4.2008, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 5.4.2008

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



но она не сортирует почему то так как надо
PM MAIL   Вверх
THandle
Дата 27.4.2008, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

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



aleksandrfnsv1, как понять не сортирует как надо?

Сортирует по возрастанию приоритеты.

А как надо?

Зачем копия?

http://forum.vingrad.ru/topic-208540/view-getnewpost.html

Это сообщение отредактировал(а) THandle - 27.4.2008, 14:23
PM   Вверх
aleksandrfnsv1
Дата 27.4.2008, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 5.4.2008

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



Да неправильно понял, все нормально там.
а не знаетли кто как сделать, так чтобы массив заполнялся допустим не весь а число элементов в него добавлялось по random
PM MAIL   Вверх
Beltar
Дата 28.4.2008, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 627
Регистрация: 11.1.2006

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



2 aleksandrfnsv1

Есть соглашение о наименовании полей и методов.
Код

TMyClass=class
  private
    FField:Integer;
    procedure SetField(const Value:Integer);
    function GetField:Integer;
  public
     property Field read GetField write SetField;


Имя любого поля начинается с F, методы для записи\взятия значения с Set\Get.
Тогда и проблем с именами не будет.

Цитата

а не знаетли кто как сделать, так чтобы массив заполнялся допустим не весь а число элементов в него добавлялось по random


Так задай границы цикла случайными в чем проблема-то??


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
aleksandrfnsv1
Дата 28.4.2008, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 5.4.2008

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



Так задай границы цикла случайными в чем проблема-то??


А как не пойму можно пример smile 
PM MAIL   Вверх
THandle
Дата 28.4.2008, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

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



Код

procedure TForm1.FormCreate(Sender: TObject);
begin
  Memo1.Clear;
  for i:=1 to random(L) + 1 do
    begin
      mas[i]:=TPismo.Create(random(34),random(40),random(3));
      memo1.Lines.Add(IntToStr(mas[i].prioritet));
    end;
end;


Как то так?
PM   Вверх
aleksandrfnsv1
Дата 28.4.2008, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 5.4.2008

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



нет  я хочу чтобы каждый промежуток времени масиив заполнялся каким то числом элементов, которые поступают не по равномерному закону распределения ( random) , а по нормальному закону распределения
PM MAIL   Вверх
Beltar
Дата 29.4.2008, 07:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 627
Регистрация: 11.1.2006

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



Если хочешь нормальный закон распределения попробуй сымитировать плотность, например, генерь Random(101) если попало в 30-70 делай 3 числа из диапазона максимальной плотности, если 10-29 и 71-90 делай 2 отклонения, если совсем крайние значения, то делай одно крайнее. Ну и хоть 10 диапазонов задай. Практически ты же, наверное, прикидываешь вероятности попадания в диапазон.

Цитата

А как не пойму можно пример


Ну заведи переменную FillCount например и сделай ей FillCount:=Randon(High(Massive)+1); и 
for i:=0 to FillCount do
  begin
  end;

В чем проблема-то?


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
aleksandrfnsv1
Дата 29.4.2008, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 5.4.2008

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



я вообще в вероятностях не понимаю smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


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

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


 




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


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

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