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

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

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.05.2016, 09:39   #1
DyanU465v
Новичок
Джуниор
 
Регистрация: 01.05.2016
Сообщений: 9
По умолчанию Паутинообразная модель в Delphi

Всем здравствуйте и с праздником. Не могли бы мне немного помочь с Delphi?
Код:
unit Unit2;


interface
  const Tk=30;
  var
  A,B,C,E,Ro,SigU,SigV,SigW,Mu,Mv,Mw,Et,Ut,Vt,Wt:integer;
   DP:   Single;
    P: array[1 .. Tk] of Single ;

 implementation

   procedure Model1()  ;
    var T,i,j,TT:integer;
    
begin
   TT:=Tk;
P[1]:= (A - C) div (B + E);		             //цена на первом врем. отрезке
P[2]:= (A - C) div B - E div B * P[1];	        //цена на втором врем. отрезке
  For T := 3 To TT   do
  begin			                    //цикл временных участков
                    //генерирование трех возможных значений случайной величины
                    //с нормальным распределением
    For j := 1 To 3 do
    begin			//цикл временных участков
    Et := 0;
      For i := 1 To 12 do
      begin
      Et:= Et + Random(1);
      If j = 1 Then Ut := Mu + (Et - 6) * SigU;
      If j = 2 Then Vt := Mv + (Et - 6) * SigV;
      If j = 3 Then Wt := Mw + (Et - 6) * SigW;
      DP := P[T - 1] - P[T - 2];
      P[T] := (A - C - E * (P[T - 1] - Ro * DP) + Ut + Wt - Vt) div B;  [Error] Unit2.pas(34): Operator not applicable to this operand type
      If P[T] < 0 Then P[T] := 0;
      P[T - 2]:= P[T - 1];
      P[T - 1]:= P[T];
      end;
    end;
  end;
end;


end.
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Image1: TImage;
    Button2: TButton;
    Button3: TButton;
    Label1: TLabel;
    Edit1: TEdit;
    Label2: TLabel;
    Edit2: TEdit;
    Label3: TLabel;
    Edit3: TEdit;
    Label4: TLabel;
    Edit4: TEdit;
    Label5: TLabel;
    Edit5: TEdit;
    Label6: TLabel;
    Edit6: TEdit;
    Label7: TLabel;
    Edit7: TEdit;
    Label8: TLabel;
    Edit8: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }

  procedure model1();
    end;
var
  Form1: TForm1;

implementation
 uses Unit2;  [Fatal Error] Unit1.pas(45): Could not compile used unit 'Unit2.pas'
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.close;  //процедура закрытия формы
end;

procedure TForm1.Button2Click(Sender: TObject);
const
  Tk=30;
  Dx=100;
  mash=1000;      //масштаб
var  j:integer;
     x0,y0:integer;
     x1,x2,R0,S,Pcp,y1,y2,Ycp,Xk:Integer;
     P: array[1 .. Tk] of Integer;
     Currentx,Currenty:real;


begin
    //очистка рисунка
    image1.Canvas.Rectangle(0,0,ClientWidth,ClientHeight);

    //считываем коэффициенты
 A:=StrToInt(Edit1.Text);
 R0:=StrToInt(Edit2.Text);
 B:=StrToInt(Edit3.Text);
 SigU:=StrToInt(Edit4.Text);
 C:=StrToInt(Edit5.Text);
 SigV:=StrToInt(Edit6.Text);
 E:=StrToInt(Edit7.Text);
 SigW:=StrToInt(Edit8.Text);

 //находим центр
 x0:=image1.Width div 2;
 y0:=image1.Width div 2;

 //рисуем оси
 image1.Canvas.MoveTo(x0,0);
 image1.Canvas.MoveTo(x0,ClientHeight);  //clientheight-линия на все поле по y
 image1.Canvas.MoveTo(0,y0);
 image1.Canvas.MoveTo(ClientHeight,y0);  //clientheight-линия на все поле по x

 //рисование графика
   x1:= 600;
   y1:= 3500-P[1]*mash;
   image1.Canvas.MoveTo(Trunc(x1)+x0,Trunc(y1*mash)+y0);

                                //шаг по времени
    S:=0;
    for j:=1 to Tk do  S:=S+P[j];
    Pcp:= S div Tk;
    Currentx := 500;
    Currenty := 1500;
    Writeln ('P');
    Currentx := 6500;
    Currenty := 3500;
    Writeln ('T');
    Currentx := 650;
    Currenty := 3300 - Pcp * mash;
    Writeln ('Pcp');
    Xk := 600 + Tk * Dx;
    Ycp := 3500 - Pcp * mash;
    image1.Canvas.Pen.Color:=98765;   // Цвет контура
    image1.Canvas.Pen.Width:=2;       //толщина линии контура (пиксили)

    Image1.Canvas.LineTo (x1,Ycp);
    image1.Canvas.LineTo (Xk,Ycp);


      for j:= 1 to Tk - 1 do
      begin
      x2:= x1 + Dx;
      y2:= 3500 - P[j] *mash;
      Image1.Canvas.MoveTo(x1,y1);
      image1.Canvas.LineTo(x2,y2);
      x1:= x2;
      y1:= y2;

     end;



       Mu := 0; //математическое ожидание
       Mv := 0;
       Mw := 0;
       Model1();   //  вызвать процедуру

        end;

{procedure TFrmMain.N6Click(Sender: TObject);
begin
  MessageBox(self.Handle, 'Курсовая работа по имитационному моделированию. Тема: "Паутинообразная модель фирмы".', 'О программе', MB_ICONINFORMATION);
end;  }

end.
Вложения
Тип файла: rar Паук.rar (176.6 Кб, 6 просмотров)

Последний раз редактировалось DyanU465v; 01.05.2016 в 09:43.
DyanU465v вне форума Ответить с цитированием
Старый 01.05.2016, 10:31   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

В сообщении об ошибке все сказано
Код:
P[T] := (A - C - E * (P[T - 1] - Ro * DP) + Ut + Wt - Vt) div B;
div - деление нацело, делимое должно быть целочисленного типа, а у тебя вещественного:
Код:
P: array[1 .. Tk] of Single ;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 01.05.2016, 11:19   #3
DyanU465v
Новичок
Джуниор
 
Регистрация: 01.05.2016
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
В сообщении об ошибке все сказано
Код:
P[T] := (A - C - E * (P[T - 1] - Ro * DP) + Ut + Wt - Vt) div B;
Спасибо большое, изначально вместо всех div был "/", по совету поменяла. Теперь появились другие ошибки
Код:
TForm1.model1(); 

[Error] Unit1.pas(132): This form of method call only allowed for class methods
[Error] Unit1.pas(39): Unsatisfied forward or external declaration: 'TForm1.Model1'
[Fatal Error] Project1.dpr(6): Could not compile used unit 'Unit1.pas'
Попробовала вставить TForm1.Model1 во второй ошибке(39) и вылезло это
Код:
[Error] Unit1.pas(39): Undeclared identifier: 'TForm1'
[Error] Unit1.pas(132): Undeclared identifier: 'Model1'
[Fatal Error] Project1.dpr(6): Could not compile used unit 'Unit1.pas'
DyanU465v вне форума Ответить с цитированием
Старый 01.05.2016, 11:38   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Процедуру Model1 в unit2 нужно в interface юнита описать.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 01.05.2016, 11:42   #5
DyanU465v
Новичок
Джуниор
 
Регистрация: 01.05.2016
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Процедуру Model1 в unit2 нужно в interface юнита описать.
У меня эта ошибка пропала только те две остались. Помогите пожалуйста
Код:
[Fatal Error] Unit1.pas(45): Could not compile used unit 'Unit2.pas'
Эта ошибка каждый раз мешает. Добавила end и исправилась ошибка "Project1.dpr". Не понимаю в чем причина все вроде end закрыты

Последний раз редактировалось DyanU465v; 01.05.2016 в 11:47.
DyanU465v вне форума Ответить с цитированием
Старый 01.05.2016, 11:47   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Вставь строку в interface юнита unit2:
Код:
procedure Model1();
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 01.05.2016, 12:14   #7
DyanU465v
Новичок
Джуниор
 
Регистрация: 01.05.2016
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Вставь строку в interface юнита unit2:
Код:
procedure Model1();
Так ведь эта строчка есть в
Код:
interface
  const Tk=30;
  var
  A,B,C,E,Ro,SigU,SigV,SigW,Mu,Mv,Mw,Et,Ut,Vt,Wt:integer;
   DP:   Single;
    P: array[1 .. Tk] of Single ;

 implementation

   procedure Model1();
Можно ли оставить или все равно в interface? Заранее извиняюсь за глупые вопросы
DyanU465v вне форума Ответить с цитированием
Старый 01.05.2016, 12:20   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Не хочешь не вставляй, хозян барин. Она есть в implementation. Что бы доступна была из другого юнита должно быть еще описание в interface
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 01.05.2016, 12:24   #9
DyanU465v
Новичок
Джуниор
 
Регистрация: 01.05.2016
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Не хочешь не вставляй, хозян барин. Она есть в implementation. Что бы доступна была из другого юнита должно быть еще описание в interface
Добавила. Остались только две ошибки
Код:
   
uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in 'Unit2.pas'; [Fatal Error] Unit1.pas(45): Could not compile used unit 'Unit2.pas'
  procedure TForm1.Model1();[Error] Unit1.pas(39): Undeclared identifier: 'TForm1'

Последний раз редактировалось DyanU465v; 01.05.2016 в 12:32.
DyanU465v вне форума Ответить с цитированием
Старый 01.05.2016, 12:32   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Убери из Unit1 описание model1 из методов класса формы.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Модель Земли с ИСЗ (Delphi) nifarap Помощь студентам 11 01.09.2017 20:52
сделать программу на C++, которая переводит цветовую модель RGB в модель HSV Kabahol Помощь студентам 5 14.03.2014 19:05
Модель Домофона на Delphi Елжан Помощь студентам 8 18.05.2013 14:15
3d модель в Delphi KISSkaэсМЕральда Помощь студентам 6 01.04.2010 17:25
Как экспортировать модель 3d max в Delphi Alar Общие вопросы Delphi 0 29.10.2006 23:43