Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Решение задач [D7]


Инна ©   (2010-02-08 18:49:00) 

Помогите! Вычислить значения функции y=(x в квадрате+4x+4)и всё это в квадрате -1   Для x принадлежащего[1;10]Вывести значения функции y<5000 на форму. проверьте что не так:
unit Unit1;

interface

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

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

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var x,y:integer;
begin
for x := 1 to 10 do
begin
x:=StrToInt(Form1.Edit1.Text);
y:=(x*x+4*x+4)*(x*x+4*x+4)-1;
if y<5000 then
Label2.Caption:='Некорректно значение'
else
end;
begin
Label2.Caption:='X='+IntToStr(x)+'Y='+IntToStr(y)+#13;

end;

end;

end.


Игорь Шевченко   (2010-02-15 01:05:00) [1]

Демо ©   (14.02.10 22:52) [15]

Не вынуждай меня удалять весь твой пост, завязывай с наездами.


Демо   (2010-02-14 22:52:00) [2]


> procedure TForm1.Button1Click(Sender: TObject);
> var x,y:integer;
> begin
> for x := 1 to 10 do
> begin
> x:=StrToInt(Form1.Edit1.Text);
> y:=(x*x+4*x+4)*(x*x+4*x+4)-1;
> if y<5000 then
> Label2.Caption:='Некорректно значение'
> else
> end;
> begin
> Label2.Caption:='X='+IntToStr(x)+'Y='+IntToStr(y)+#13;
>
> end;
>


1. Переменная цикла изменяется в цикле for x :=1 to 10 do x :=. Это
как?
2. Так как выражение возводится в квадрат, то лучше воспользоваться промежуточной переменной.

var
 x,xt: Integer;
begin
 x := StrToInt(Edit1.Text);
 xt := x*x + 4*x + 4;
 y := xt*xt - 1;
 Label2.Caption := 'X=' + IntToStr(x) + 'Y=' + IntToStr(y) + #13;



> Jeer ©   (08.02.10 21:40) [3]
>
> > 12 ©   (08.02.10 19:01) [2]
>
>
> Ну что ты хочешь от девушки странного ?
> Надо предлагать обычное - это помогает.


Может в сад пойти?


NewZ   (2010-02-14 21:13:00) [3]

Удалено модератором


oldman   (2010-02-14 21:10:00) [4]


> procedure TForm1.calculate_and_draw;
>  ...
> end;

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


Тоже мощно!


KilkennyCat   (2010-02-14 21:09:00) [5]


> Это пример.

толку от примера плохого?


> Сделай проще...Сможеш???


var
z :integer;
...
z := X * X + 4 * X + 4 ;
Y :=  z * z - 1;

Это навскидку. Можно еще проще.


> Это не константа. Умница. Это максимум этой странной функции.


В сад, умник, в сад...


NewZ   (2010-02-14 20:45:00) [6]


> это мощно.

Это пример.


> ну а это еще мощннеее

Сделай проще...Сможеш???


> если уж такая фигня, то есть константы.

Это не константа. Умница. Это максимум этой странной функции.


KilkennyCat   (2010-02-14 20:39:00) [7]


> 144 * 144 - 1


если уж такая фигня, то есть константы.


NewZ   (2010-02-14 20:37:00) [8]


> cY := Trunc(Y * Form1.Height / (144 * 144 - 1));


Правильнее так:


cY := Form1.Height - Trunc(Y * Form1.Height / (144 * 144 - 1));


Чтобы перевернуть ось Y.


KilkennyCat   (2010-02-14 20:37:00) [9]


>  X := i;

это мощно.


>Y := (X * X + 4 * X + 4) * (X * X + 4 * X + 4) - 1;


ну а это еще мощннеее


NewZ   (2010-02-14 20:27:00) [10]


unit Unit1;

interface

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

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

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.calculate_and_draw;
var
 i, cX, cY: Integer;
 X, Y: Single;
begin
 Canvas.Brush.Color := clBlue;
 Canvas.Pen.Color := clGreen;
 for i := 0 to 10 do
 begin
   X := i;
   Y := (X * X + 4 * X + 4) * (X * X + 4 * X + 4) - 1;
   cX := Trunc(X * Form1.Width / 10);
   cY := Trunc(Y * Form1.Height / (144 * 144 - 1));
   Canvas.Rectangle(cX - 2, cY - 2, cX + 2, cY + 2);
 end;
end;

{ TForm1 }

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

end.


oldman   (2010-02-09 11:09:00) [11]


> if y<5000 then
> Label2.Caption:='Некорректно значение'
> else
> end;


Прям как в учебнике?


Jeer   (2010-02-08 22:48:00) [12]

Мне больше понравились глубокие мысли о заборах:)

for ... do begin
 if .. then
   ..
 else
 end; // end if

 begin
   ..
 end;
end; // end for


KilkennyCat   (2010-02-08 22:36:00) [13]


> 12 ©   (08.02.10 19:01) [2]

ускоряется работа цикла


Jeer   (2010-02-08 21:40:00) [14]


> 12 ©   (08.02.10 19:01) [2]


Ну что ты хочешь от девушки странного ?
Надо предлагать обычное - это помогает.


12   (2010-02-08 19:01:00) [15]

каша какая то

например
for x := 1 to 10 do
begin
x:=StrToInt(Form1.Edit1.Text);

что тут делается?


Игорь Шевченко   (2010-02-08 18:58:00) [16]


> проверьте что не так:


обращение


Наверх

Титульная страница Поиск, карта сайта Написать письмо