Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Delphi]Периметр прямоугольника 
:(
    Опции темы
dimoxi
Дата 28.12.2008, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Извините меня за этот жутко глупый вопрос, как мне вставить вот этот вот код в Delpi:

Цитата
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

//Определение длины линии по двум вершинам
function Otrezok(A, B: TPoint): Real;
var
  AB: TPoint;
  mAB: Real;
begin
//Вычисление векторов
AB.X:=A.X-B.X;
AB.Y:=A.Y-B.Y;
//Вычисление длины отрезка
mAB:=sqrt(sqr(AB.X)+sqr(AB.Y));
//результат
result:=mAB;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  a: array [0..2] of TPoint; //Массив для 3-х точек
  i: integer;
  res: Real;
begin
res:=0.0;
//Заполнение массива точками
a[0]:=point(0, 0);
a[1]:=point(0, 10);
a[2]:=point(10, 0);

//Сложение длин
for i:=0 to length(a)-2 do
begin
Res:=Res+Otrezok(a[i], a[i+1]);
end;
Res:=Res+Otrezok(a[0], a[length(a)-1]);//Первая и последняя точки
//Вывод результата
form1.Label1.Caption:=floattostr(res)
end;

end.


Я пытался вставить, но вылезает красная строка 
Цитата
procedure TForm1.Button1Click(Sender: TObject);


Если кого нибудь не затруднит сделайте мне пожалуйста из этого кода прогу, конкретно должна получиться программа для подсчёта периметра прямоугольника по заданным координатам

Сам я первый раз работаю в Delphi, так что строго не судите




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


Новичок



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

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



Ну люди, пожалуйста помогите, очень прошу!
PM MAIL   Вверх
taiven
Дата 28.12.2008, 21:57 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



во вновь созданном проекте после строк
Код

implementation

{$R *.dfm}

вставляешь это:
Код

function Otrezok(A, B: TPoint): Real;
var
  AB: TPoint;
  mAB: Real;
begin
//Вычисление векторов
AB.X:=A.X-B.X;
AB.Y:=A.Y-B.Y;
//Вычисление длины отрезка
mAB:=sqrt(sqr(AB.X)+sqr(AB.Y));
//результат
result:=mAB;
end;

затем кидаешь на форму компоненты TButton(кнопка) и TLabel. Потом кликаешь дважды на только что установленную на форму кнопку, в результате чего появится процедура такого вида:
Код

procedure TForm1.Button1Click(Sender: TObject);
begin
end;                                               

вытираешь строки begin и end и вместо них вставляешь этот код:
Код

var
  a: array [0..2] of TPoint; //Массив для 3-х точек
  i: integer;
  res: Real;
begin
     res:=0.0;
      //Заполнение массива точками
      a[0]:=point(0, 0);
      a[1]:=point(0, 10);
      a[2]:=point(10, 0);

      //Сложение длин
      for i:=0 to length(a)-2 do
      begin
           Res:=Res+Otrezok(a[i], a[i+1]);
      end;
      Res:=Res+Otrezok(a[0], a[length(a)-1]);//Первая и последняя точки
      //Вывод результата
      form1.Label1.Caption:=floattostr(res)
end;  

PM   Вверх
dimoxi
Дата 29.12.2008, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Запустил, чё то не то получилось что ожидал, хотя бы примерно
Конкретно нужна прога для подсчёта периметра и площади прямоугольника по заданным координатам+изменение цвета прямоугольника на синий, красный, чёрный, зелёный.
Могли бы договорится за 1$, знаю что эту штуку написать не долго
PM MAIL   Вверх
taiven
Дата 29.12.2008, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



к сожалению нет дельфей на компе, поэтому я вряд ли чем-то смогу помочь.
PM   Вверх
dimoxi
Дата 29.12.2008, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А кто может, не посоветуешь ?
PM MAIL   Вверх
dimoxi
Дата 29.12.2008, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Люди помогите а...
PM MAIL   Вверх
airyashov
Дата 30.12.2008, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



открываешь делфи, на форму кидаешь Label  и Button
по Button мышью двойной клик и заменить весь текст модуля на тот что указан в 1 твоем посте

в приложение проек на 7 делфе

Присоединённый файл ( Кол-во скачиваний: 8 )
Присоединённый файл  perim.rar 160,93 Kb


--------------------
icq:3(один)7748666
mail:airyashov( а )inbox.ru
PM MAIL   Вверх
taiven
Дата 30.12.2008, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Вот могу дать исходник. Использовал Lazarus, а не Delphi поэтому проект не прикрепляю. В принципе в дельфях это должно работать.
Код

unit Unit1; 

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  StdCtrls, ExtCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    ComboBox1: TComboBox;
    Edit1: TEdit;      //для ввода x1
    Edit2: TEdit;      //для ввода x2
    Edit3: TEdit;      //для ввода y1
    Edit4: TEdit;      //для ввода y2
    Image1: TImage;
    Label1: TLabel;    //поменять Caption на x1
    Label2: TLabel;    //поменять Caption на x2
    Label3: TLabel;    //поменять Caption на y1
    Label4: TLabel;    //поменять Caption на y2
    Label5: TLabel;    //поменять Caption на S =
    Label6: TLabel;    //поменять Caption на P =
    procedure Button1Click(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormPaint(Sender: TObject);

  private
    { private declarations }
  public
    { public declarations }
  end; 

var
  Form1: TForm1;
  x1,x2,y1,y2 : integer;

implementation
{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
var
   a,b,P,S : integer;
   res_P, res_S : AnsiString;
begin
     x1 := StrToInt(Edit1.Text);
     x2 := StrToInt(Edit2.Text);
     y1 := StrToInt(Edit3.Text);
     y2 := StrToInt(Edit4.Text);

     if (x1 >= x2) or (y1 >= y2) then
     begin
          Edit1.Clear;
      Edit2.Clear;
      Edit3.Clear;
      Edit4.Clear;
          ShowMessage('Error: x1 > x2 or y1 > y2');
     end
     else
     begin
    a:= y2 - y1;
    b:= x2 - x1;

        S:= a * b;
        P:= (a + b) * 2;

        res_P:= 'P = ';
        res_S:= 'S = ';
        res_P+= IntToStr(P);
        res_S+= IntToStr(S);

        Label5.Caption:= res_P;
        Label6.Caption:= res_S;

        Image1.Repaint;
        Image1.Canvas.Rectangle(x1,y1,x2,y2);
     end;

end;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
     case ComboBox1.ItemIndex of
          0 : Image1.Canvas.Brush.Color:= clBlue;
          1 : Image1.Canvas.Brush.Color:= clRed;
          2 : Image1.Canvas.Brush.Color:= clBlack;
          3 : Image1.Canvas.Brush.Color:= clGreen;
     end;
        Image1.Repaint;
    Image1.Canvas.Rectangle(x1,y1,x2,y2);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
       ComboBox1.Items.Clear;
       ComboBox1.Items.Add('Синий');
       ComboBox1.Items.Add('Красный');
       ComboBox1.Items.Add('Чёрный');
       ComboBox1.Items.Add('Зелёный');
end;

procedure TForm1.FormPaint(Sender: TObject);
begin
     Form1.Canvas.Pen.Style:= psDashDot;
     Form1.Canvas.Rectangle(Image1.Left,
                            Image1.Top,
                            Image1.ClientWidth,
                            Image1.ClientHeight);
end;

initialization
  {$I unit1.lrs}

end.

и еще, проверок на правильность ввода нет...
 

Это сообщение отредактировал(а) taiven - 30.12.2008, 13:13

Присоединённый файл ( Кол-во скачиваний: 14 )
Присоединённый файл  pic.JPG 16,36 Kb
PM   Вверх
dimoxi
Дата 4.1.2009, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

//Определение длины линии по двум вершинам
function Otrezok(A, B: TPoint): Real;
var
  AB: TPoint;
  mAB: Real;
begin
//Вычисление векторов
AB.X:=A.X-B.X;
AB.Y:=A.Y-B.Y;
//Вычисление длины отрезка
mAB:=sqrt(sqr(AB.X)+sqr(AB.Y));
//результат
result:=mAB;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  a: array [0..2] of TPoint; //Массив для 3-х точек
  i: integer;
  res: Real;
begin
res:=0.0;
//Заполнение массива точками
a[0]:=point(0, 0);
a[1]:=point(0, 10);
a[2]:=point(10, 0);

//Сложение длин
for i:=0 to length(a)-2 do
begin
Res:=Res+Otrezok(a[i], a[i+1]);
end;
Res:=Res+Otrezok(a[0], a[length(a)-1]);//Первая и последняя точки
//Вывод результата
form1.Label1.Caption:=floattostr(res)
end;

end.


Вот распечатал я эту ерунду, сунул информатичке, она говорит что типа это не я делал, и это не соотвтствует моему уровню знаний и группы, сказала чтобы я переделал и приходить на зачёт повторно :(
Рябята последний раз вас прошу напишите простой исходный код, чтобы она поняла что это я делал, помоему она сказала чтобы без массивов было.
Обещаю что к лету изучу Delphi в совершенстве smile

Добавлено через 8 минут и 47 секунд
Хм... может подойдёт исходник taiven ?
Вроде он без массивов...
Бл... извините меня, чё то я совсем с этой ерундой затупил, не знаю даже чё лучше ей "сунуть"
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

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

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


 




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


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

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