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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2014, 12:36   #1
Oksanalis69
 
Регистрация: 27.02.2014
Сообщений: 9
По умолчанию Помогите переделать код из Basicа для Delphi

Здравствуйте. Помогите пожалуйста переделать код
Первоначальный код в Basic

Процедуры обработки прерываний
Код:
Private Sub cmdExit_Click()
End
End Sub

Private Sub cmdGrafic_Click()
Line (600, 3500)-(6600, 3500)		     /горизонтальная ось
Line (600, 3500)-(600, 1500)		            /вертикальная ось
My = 1000					           /масштаб по оси Y
X1 = 600: Y1 = 3500 - P(1) * My
Dx = 100
						          /шаг по времени
S = 0: For j = 1 To Tk: S = S + P(j): Next
Pcp = S / Tk
CurrentX = 500: CurrentY = 1500: Print "P"
CurrentX = 6500: CurrentY = 3500: Print "T"
CurrentX = 650: CurrentY = 3300 - Pcp * My
Print "Pcp"
Xk = 600 + Tk * Dx: Ycp = 3500 - Pcp * My
'Form1.ForeColor = 98765
Line (X1, Ycp)-(Xk, Ycp)
For j = 1 To Tk - 1
X2 = X1 + Dx: Y2 = 3500 - P(j) * My
Line (X1, Y1)-(X2, Y2)
X1 = X2: Y1 = Y2
Next j
End Sub

Private Sub cmdRashet_Click()
A = Val(Text1): B = Val(Text2): C = Val(Text3)
E = Val(Text4): Ro = Val(Text5): Su = Val(Text6)
Sv = Val(Text7): Sw = Val(Text8)
Mu = 0: Mv = 0: Mw = 0
Call Model1
Cls

End Sub

Private Sub Form_Load()
frmForm.Show: Cls
End Sub
Модуль общего назначения Model1
Код:
Public Const Tk = 30
Public P(Tk) As Single
Public T As Integer, i As Integer, j As Integer

Public A, B, C, E, Ro, Su, Sv, Sw, Mu, Mv, Mw, Et
Public Sub Model1()
P(l) = (A - C) / (B + E)		                    /цена на первом временном отрезке
P(2) = (A - C) / B - E / B * P(1)	     /цена на втором врем. отрезке
For T = 3 To Tk				     /цикл временных участков
/генерирование трех возможных значений случайной величины
/с нормальным распределением
For j = 1 To 3				    /цикл временных участков
Et = 0
For i = 1 To 12
Et = Et + Rnd
Next
If j = 1 Then Ut = Mu + (Et - 6) * Su
If j = 2 Then Vt = Mv + (Et - 6) * Sv
If j = 3 Then Wt = Mw + (Et - 6) * Sw
Next
DP = P(T - 1) - P(T - 2)
P(T) = (A - C - E * (P(T - 1) - Ro * DP) + Ut + Wt - Vt) / B
If P(T) < 0 Then P(T) = 0
P(T - 2) = P(T - 1): P(T - 1) = P(T)
Next
End Sub

Вот то, что я пыталась сделать в Delphi
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.close;
end;

procedure TForm1.Button3Click(Sender: TObject);

var A,R0,B,SigU,C,SigV,E,SigW,:integer;
begin
 A:=StrToFloat(Edit1.Text);
 R0:=StrToFloat(Edit2.Text);
 B:=StrToFloat(Edit3.Text);
 SigU:=StrToFloat(Edit4.Text);
 C:=StrToFloat(Edit5.Text);
 SigV:=StrToFloat(Edit6.Text);
 E:=StrToFloat(Edit7.Text);
 SigW:=StrToFloat(Edit8.Text);
 Mu = 0 and Mv = 0 and Mw = 0;
end;

Пыталась создать модуль
Код:
unit Unit2;

interface
 const Tk=30
var P(tk):integer;
     A, B, C, E, Ro, SigU, SigV, SigW, Mu, Mv, Mw, Et:integer;
   P(l) = (A - C) / (B + E);
   P(2) = (A - C) / B - E / B * P(1);
   For T = 3 To Tk do
    For j = 1 To 3 do
    Et = 0;
      For i = 1 To 12 do
      Et = Et + Rnd;
        If j = 1 Then Ut = Mu + (Et - 6) * Su;
        If j = 2 Then Vt = Mv + (Et - 6) * Sv;
        If j = 3 Then Wt = Mw + (Et - 6) * Sw;
implementation

end.
Заранее спасибо

Последний раз редактировалось Stilet; 28.02.2014 в 15:50.
Oksanalis69 вне форума Ответить с цитированием
Старый 28.02.2014, 13:20   #2
Oksanalis69
 
Регистрация: 27.02.2014
Сообщений: 9
По умолчанию

Программисты пожалуйста помогите.
Сегодня я сделала еще немного, но появились ошибки и недоделанные остались части.

Код:
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 }
  end;
 procedure model1();  
var
  Form1: TForm1;

implementation
 uses Unit2;
{$R *.dfm}

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

procedure TForm1.Button2Click(Sender: TObject);
const
  Dx=100;
  mash=1000;       //масштаб
var R0,S,Pcp,Tk,j:integer;
     x0,y0:integer;
     x1,y1:integer;
     x2,y2:integer;
     

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;  //ошибка Incompatible types: 'integer' and 'extended'
   image1.Canvas.MoveTo(Trunc(x1)+x0,Trunc(y1*mash)+y0);
 

    S:=0;
    for j:=1 to Tk do
    begin
    S:=S+P[j];  //ошибка Incompatible types: 'integer' and 'extended'
    Pcp:= S / Tk;



помогите эту часть сделать
{CurrentX = 500;
    CurrentY = 1500;
    Print "P";
    CurrentX = 6500;
    CurrentY = 3500;
    Print "T";
    CurrentX = 650;
    CurrentY = 3300 - Pcp * mash;
    Print "Pcp";
    Xk = 600 + Tk * Dx: Ycp = 3500 - Pcp * mash;
    'Form1.ForeColor = 98765;
    Line (X1, Ycp)-(Xk, Ycp) }


for j := 1 to Tk - 1 do    //ошибка assignment to for-loop variable 'j'
begin
  X2 := X1 + Dx;
  Y2 := 3500 - P[j] * mash; //ошибка:Incompatible types: 'integer' and 'extended'



эту тоже надо

[COLOR=" (X1, Y1)-(X2, Y2)
X1 = X2;
Y1 = Y2;
 j }
[/COLOR]


end; 

begin

И эту 

{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);
Mu = 0; //математическое ожидание
Mv = 0;
Mw = 0; }


Model1();   //  вызвать процедуру

 end;
 end;
 end;
end.



program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in 'Unit2.pas'; //ошибка could not compile used unit 'unit1.pas'

{ Unit2 in '888:\888\Unit2.pas';     }

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
Модуль (Model1 в Unit2) я сделала полностью и ошибок там нет
Код:
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) / (B + E);		             //цена на первом врем. отрезке
P[2]:= (A - C) / B - E / 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) / B;
      If P[T] < 0 Then P[T] := 0;
      P[T - 2]:= P[T - 1];
      P[T - 1]:= P[T];
      end;
    end;
  end;
end;


end.

Последний раз редактировалось Stilet; 28.02.2014 в 15:50.
Oksanalis69 вне форума Ответить с цитированием
Старый 28.02.2014, 13:30   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

те переменные, которые вычисляются от P()
делайте вещественного типа (real или double или extended).
Навскидку, это переменные R0, S, Pcp, Tk ...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.02.2014, 13:57   #4
Oksanalis69
 
Регистрация: 27.02.2014
Сообщений: 9
По умолчанию

Спасибо, что ответили. Я переделала, но некоторые ошибки остались.
Код:
j:integer;
     x0,y0:integer;
     x1:integer;
     x2:integer;
     R0:Extended;
     S:Extended;
     Pcp:Extended;
     Tk:Extended;
     y1:Extended;
     y2:Extended;

for j:=1 to Tk do    // Incompatible types: 'integer' and 'extended'

for j:= 1 to Tk - 1 do    //assignment to For-loop variable'j'
                               //Incompatible types: 'integer' and 'extended'

procedure model1();  //Unsatisfied forward or external declaration: 'model1'


Unit2 in 'Unit2.pas'; //Project1.dpr(6):could not compile used unit 'unit1.pas'

Последний раз редактировалось Stilet; 28.02.2014 в 15:51.
Oksanalis69 вне форума Ответить с цитированием
Старый 28.02.2014, 14:13   #5
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

1. Не лезь в файл проэкта, (если не знаеш, что, почемуи как делается.
2. Выложив весь проект, ещё не значит, что его просмотрят.
3. Что-бы Вам помогли, выкладывайте проблеммный участок, здесь не дураки собрались, разберёмся.
Оксаночка, Вас школе чему учили?
Incompatible types: 'integer' and 'extended'
Не соответствие типов, продолжать?
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 28.02.2014 в 14:19.
Smitt&Wesson вне форума Ответить с цитированием
Старый 28.02.2014, 14:34   #6
Oksanalis69
 
Регистрация: 27.02.2014
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
1. Не лезь в файл проэкта, (если не знаеш, что, почемуи как делается.
Но мне надо понять причину, почему так
Цитата:
3. Что-бы Вам помогли, выкладывайте проблеммный участок, здесь не дураки собрались, разберёмся.
Код:
private
    { Private declarations }
  public
    { Public declarations }
  end;
 procedure model1();  //Unsatisfied forward or external declaration: 'model1'
var
  Form1: TForm1;
image1.Canvas.MoveTo(Trunc(x1)+x0,Trunc(y1*mash)+y0);

    S:=0;
    for j:=1 to Tk do    // Incompatible types: 'integer' and 'extended'
    begin
    S:=S+P[j];
    Pcp:= S / Tk;
for j:= 1 to Tk - 1 do    //assignment to For-loop variable'j'
                       //Incompatible types: 'integer' and 'extended'
Цитата:
Оксаночка, Вас школе чему учили?
Incompatible types: 'integer' and 'extended'
Не соответствие типов, продолжать?
То, что посоветовал Сергей, я выполнила. В Tk поставила 'Extended', но все равно ругается. И я понять не могу почему

Последний раз редактировалось Stilet; 28.02.2014 в 15:51.
Oksanalis69 вне форума Ответить с цитированием
Старый 28.02.2014, 15:01   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

во-первых, запакуйте ваш проект (все исходные файлы с расширением .pas .dfm .dpr ) в архив и архив прикрепите к сообщению (или выложите на любой бесплатный файлобменник и сюда ссылку на скачивание)


во-вторых, по поводу данных КОНКРЕТНЫХ ошибок:
Вы неправильно поняли, что такое Tk!
Цитата:
Код:
Public Const Tk = 30
Public P(Tk) As Single

Код:
const Tk = 30;
...

    S:=0.0;
    for j:=1 to Tk do S:=S+P[j];  
    Pcp:= S / Tk;
обратите внимание, никакого Begin в данном случае НЕ НУЖНО!!!
и следующие ошибки тоже уйдут

Последний раз редактировалось Serge_Bliznykov; 28.02.2014 в 15:10.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.02.2014, 15:53   #8
Oksanalis69
 
Регистрация: 27.02.2014
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
во-первых, запакуйте ваш проект (все исходные файлы с расширением .pas .dfm .dpr ) в архив и архив прикрепите к сообщению (или выложите на любой бесплатный файлобменник и сюда ссылку на скачивание)
Паутинообразная модель фирмы.rar
Цитата:
во-вторых, по поводу данных КОНКРЕТНЫХ ошибок:
Вы неправильно поняли, что такое Tk!



Код:
const Tk = 30;
...

    S:=0.0;
    for j:=1 to Tk do S:=S+P[j];  
    Pcp:= S / Tk;
обратите внимание, никакого Begin в данном случае НЕ НУЖНО!!!
и следующие ошибки тоже уйдут
Все что было с 'Extended' исправилось
Oksanalis69 вне форума Ответить с цитированием
Старый 01.03.2014, 12:38   #9
Oksanalis69
 
Регистрация: 27.02.2014
Сообщений: 9
По умолчанию

Здравствуйте еще раз. Спасибо Сергей за помощь с 'Extended'. Но появились новые.
Цитата:
begin
x2 := x1 + Dx; //[Hint] Unit1.pas(108): Value assigned to 'x2' never used
y2 := 3500 - P[j] * mash; //[Hint] Unit1.pas(109): Value assigned to 'y2' never used
...
S:=0.0;
for j:=1 to Tk do S:=S+P[j];
Pcp:= S / Tk; //[Hint] Unit1.pas(92): Value assigned to 'Pcp' never used
...
A:=StrToInt(Edit1.Text);
R0:=StrToInt(Edit2.Text); //[Hint] Unit1.pas(70): Value assigned to 'R0' never used
B:=StrToInt(Edit3.Text);
Как я поняла ошибки не смертельные, перемудрила. Но что-то не могу понять, как исправить

Ошибки с 'Unit1.pas' и 'model1' остались
Oksanalis69 вне форума Ответить с цитированием
Старый 01.03.2014, 12:49   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Как я поняла ошибки не смертельные
Это не ошибки. Это информация для справки мол "Переменная <такая-то> описана. но в программе не применена".
Цитата:
Ошибки с 'Unit1.pas' и 'model1' остались
Какие?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переделать в код для Delphi Начинающий програм Помощь студентам 14 05.12.2012 22:20
Переделать в код Delphi!! Настена290 Помощь студентам 2 01.02.2012 15:52
Помогите переделать код С++ в Delphi (CRC) Georgios Помощь студентам 2 22.07.2009 13:28
Помогите переделать код stayer Общие вопросы Delphi 3 25.10.2008 21:09