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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.06.2019, 19:11   #1
Kefatoo
Новичок
Джуниор
 
Регистрация: 06.06.2019
Сообщений: 1
По умолчанию Нужно перевести код с делфи 7 на с++

У меня есть текст программы на delphi.Очень нужно эту же программу написать на С++ с такими же функциями и процедурами.
Условие задачи: В файле заданы координаты центров и радиусы кругов. В другом файле заданы координаты одной из вершин вписанного квадрата для каждого круга. Вывести на экран круги и вписаны в них квадраты. Центры кругов, в которых вписаны квадраты, имеют площадь в пределах между средней площадью кругов и средней площадью квадратов, соединить ломаной, отрезки которой не пересекаются между собой.

ВСЯ ПРОГРАММА НЕ ВЛЕЗЛА , ЕСЛИ ГОТОВЫ ПОМОЧЬ, ПИШИТЕ В ЛИЧНЫЕ СООБЩЕНИЯ!
Зарание спасибо)


Код:
unit Unit1;

interface

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

const
  MaxIIndex = 100;

type
  TIndex = 0..MaxIIndex;
  TVector = array [TIndex] of Real;

  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Edit3: TEdit;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
     N: TIndex;    // count of circles
 GoodN: TIndex;    // count of good circles
    Rx: TVector;   // Rx[i] circle x coord
    Ry: TVector;   // Ry[i] circle y coord
    Rr: TVector;   // Rr[i] circle radius
    Ax: TVector;   // Square Ax[i] x coord
    Ay: TVector;   // Square Ay[i] y coord
    Bx: TVector;   // Square Bx[i] x coord
    By: TVector;   // Square By[i] y coord
    Cx: TVector;   // Square Cx[i] x coord
    Cy: TVector;   // Square Cy[i] y coord
    Dx: TVector;   // Square Dx[i] x coord
    Dy: TVector;   // Square Dy[i] y coord
    SC: TVector;   // S circle
    SS: TVector;   // S square
    IsGood: array [TIndex] of Boolean;
    SCsum: Real;   // sum of circle squares
    SSsum: Real;   // sum of square squares
    AvrSC: Real;   // average circle square
    AvrSS: Real;   // average square square
    procedure SwapIJ(Sender: TObject; i: TIndex; j:TIndex);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.SwapIJ;

procedure SwapReal (var x, y: Real);
var
  tmpValReal: Real;
begin
    tmpValReal := x;   x := y;   y := tmpValReal;  // x<=>y
end;

procedure SwapBool (var x, y: Boolean);
var
  tmpValBool: Boolean;
begin
    tmpValBool := x;   x := y;   y := tmpValBool;  // x<=>y
end;

begin
    SwapReal(Rx[i], Rx[j]);  // Rx[i]<=>Rx[j]
    SwapReal(Ry[i], Ry[j]);  // Ry
    SwapReal(Rr[i], Rr[j]);  //   Rr
    SwapReal(Ax[i], Ax[j]);  //     Ax
    SwapReal(Ay[i], Ay[j]);  //       Ay
    SwapReal(Bx[i], Bx[j]);  // Bx
    SwapReal(By[i], By[j]);  //   By
    SwapReal(Cx[i], Cx[j]);  //     Cx
    SwapReal(Cy[i], Cy[j]);  //       Cy
    SwapReal(Dx[i], Dx[j]);  //         Dx
    SwapReal(Dy[i], Dy[j]);  //           Dy
    SwapReal(SC[i], SC[j]);  // SC
    SwapReal(SS[i], SS[j]);  //   SS
    SwapBool(IsGood[i], IsGood[j]);  // IsGood
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  f1: TextFile;  // in file 1
  f2: TextFile;  // in file 2
//  n: integer;    // circle count
  s: String;     // temp string
  i: integer;    // index
  xmin: real;    // ROx min
  xmax: real;    // ROx max
  ymin: real;    // ROy min
  ymax: real;    // ROy max
  rmin: real;    // R radius min
  rmax: real;    // R radius max
  fi: real;      //  0..2 rad
begin
  Edit1.Text := 'file1.dat.txt';
  Edit2.Text := 'file2.dat.txt';
  //
  AssignFile(f1, Edit1.Text);
  Rewrite(f1);
  AssignFile(f2, Edit2.Text);
  Rewrite(f2);
  //
  n := 0;
  while (n=0) do
  begin
    s := InputBox('Введіть кількість кіл', 'Кількість кіл = ', '7');
    try
      n := StrToInt(s);
    except
      n := 0;
    end; // try
  end; // while
  //
  xmin:=30;    // ROx min
  xmax:=300;    // ROx max
  ymin:=30;    // ROy min
  ymax:=300;    // ROy max
  rmin:=20;    // R radius min
  rmax:=90;    // R radius max
  //
  Randomize;
  for i:=1 to n do
  begin
    Rx[i] := xmin + (xmax-xmin)*Random;   // Rx[i] circle x coord
    Ry[i] := ymin + (ymax-ymin)*Random;   // Ry[i] circle y coord
    Rr[i] := rmin + (rmax-rmin)*Random;   // Rr[i] circle radius
    fi :=  2*Random;     // random fi
    Ax[i] := Rx[i] + Rr[i]*cos(fi);    // Square Ax[i] x coord
    Ay[i] := Ry[i] + Rr[i]*sin(fi);;   // Square Ay[i] y coord
    Writeln(f1, Rx[i]:6:12, ' ', Ry[i]:6:12, ' ', Rr[i]:6:12);
    Writeln(f2, Ax[i]:6:12, ' ', Ay[i]:6:12);
  end;
  //
  Flush(f1);
  CloseFile(f1);
  Flush(f2);
  CloseFile(f2);
end;

procedure TForm1.Button5Click(Sender: TObject);
var
  i: TIndex;                  // tmp index
  Index: TIndex;              // tmp index for rearrange
  MinXindex: TIndex;      // index for sort
  Index2: TIndex;              // tmp index for rearrange
  FreeGoodIndex: TIndex;      // index for free cell for rearrange
  f3: TextFile;  // out file 3
begin
  Memo1.Clear;
  Canvas.Pen.Width := 1;
  Canvas.Rectangle(0,0, 500,500);         // clear canvas rectangle
  Edit3.Text := 'file3.dat.txt';
  AssignFile(f3, Edit3.Text);
  Rewrite(f3);
  // read data from input files & check validation

  // !!! data is actyal after fgenerating procedure

  // -- todo

  //
  //
  // calculate B,C,D,SC,SS,   SCsum, SSsum,    AvrSC, AvrSS
  SCsum := 0;
  SSsum := 0;
  for i:=1 to n do
  begin
    Bx[i] := Rx[i] + -(Ay[i]-Ry[i]);
    By[i] := Ry[i] +  (Ax[i]-Rx[i]);
    //
    Cx[i] := Rx[i] + -(Ax[i]-Rx[i]);
    Cy[i] := Ry[i] + -(Ay[i]-Ry[i]);
    //
    Dx[i] := Rx[i] +  (Ay[i]-Ry[i]);
    Dy[i] := Ry[i] + -(Ax[i]-Rx[i]);
    //
    SC[i] := Pi * Rr[i] * Rr[i];
    SCsum := SCsum + SC[i];
    SS[i] := 2  * Rr[i] * Rr[i];
    SSsum := SSsum + SS[i];
  end;
  AvrSC := SCsum / n;
  AvrSS := SSsum / n;
  //
  Memo1.Lines.Add('Average SC =' + FloatToStr(AvrSC));
  Memo1.Lines.Add('Average SS =' + FloatToStr(AvrSS));
  // draw all
  // calculate  GoodN
  GoodN := 0;
  for i:=1 to n do                              // loop for circles
  begin
    // set color: red - bad; green - good
    // for good draw centre of cicle
    IsGood[i] := false;
    if (SS[i]>AvrSS) and (SS[i]<AvrSC)          // check for goodnes of cicle
      then
      begin
        GoodN := GoodN + 1;                     // inc GoodN
        IsGood[i] := true;                      // set good flag to true
        Canvas.Pen.Color := clGreen;            // set color to green
        // circle centre
        Canvas.Arc(                             // draw circle centre
            trunc(Rx[i]-2), trunc(Ry[i]-2),     // left up corner
            trunc(Rx[i]+2), trunc(Ry[i]+2),     // right down corner
            trunc(Rx[i]-2), trunc(Ry[i]-2),     // start paint coord
            trunc(Rx[i]-2), trunc(Ry[i]-2)      // finish paint coord
        );
      end
Пожалуйста, оформляйте Ваш код согласно правилам.

Последний раз редактировалось Вадим Мошев; 06.06.2019 в 21:01.
Kefatoo вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевести ява-скрипт на делфи Roman324 Общие вопросы Delphi 2 31.01.2013 01:39
как перевести на язык делфи Giku Помощь студентам 1 12.11.2011 18:21
Программу нужно перевести из паскаля в делфи Ильшат Садыков Компоненты Delphi 1 09.06.2010 19:49
Перевести код на Делфи Superlotles Помощь студентам 7 30.03.2010 20:18
Как перевести на делфи следующий код? SkAndrew Общие вопросы Delphi 7 15.05.2009 21:48