Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

Решение задач   Найти похожие ветки 

 
Инна   (2010-02-08 18:49) [0]

Помогите! Вычислить значения функции 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-08 18:58) [1]


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


обращение


 
12 ©   (2010-02-08 19:01) [2]

каша какая то

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

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


 
Jeer ©   (2010-02-08 21:40) [3]


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


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


 
KilkennyCat ©   (2010-02-08 22:36) [4]


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

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


 
Jeer ©   (2010-02-08 22:48) [5]

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

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

 begin
   ..
 end;
end; // end for


 
oldman ©   (2010-02-09 11:09) [6]


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


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


 
NewZ ©   (2010-02-14 20:27) [7]


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.



 
NewZ ©   (2010-02-14 20:37) [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) [9]


>  X := i;

это мощно.


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


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


 
KilkennyCat ©   (2010-02-14 20:39) [10]


> 144 * 144 - 1


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


 
NewZ ©   (2010-02-14 20:45) [11]


> это мощно.

Это пример.


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

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


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

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


 
KilkennyCat ©   (2010-02-14 21:09) [12]


> Это пример.

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


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


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

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


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


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


 
oldman ©   (2010-02-14 21:10) [13]


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

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


Тоже мощно!


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

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


 
Демо ©   (2010-02-14 22:52) [15]


> 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]
>
>
> Ну что ты хочешь от девушки странного ?
> Надо предлагать обычное - это помогает.


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


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

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

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



Страницы: 1 вся ветка

Текущий архив: 2010.08.27;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.049 c
15-1273696195
Юрий
2010-05-13 00:29
2010.08.27
С днем рождения ! 13 мая 2010 четверг


15-1271686611
БарЛог
2010-04-19 18:16
2010.08.27
А как будет по-английки...


2-1273983220
Учащийся
2010-05-16 08:13
2010.08.27
Какой код быстрее


15-1268861402
Юрий
2010-03-18 00:30
2010.08.27
С днем рождения ! 18 марта 2010 четверг


4-1233264082
Nikfel
2009-01-30 00:21
2010.08.27
Как создать окно с кнопкой