![]() |
|
#1
|
|||
|
|||
![]() Задача звучит следующим образом:
Вычислить дробную часть среднего геометрического трех заданных положительных чисел. подскажите как сделать, чтобы программа только с положительными числами работала Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Math, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) edt1: TEdit; edt2: TEdit; edt3: TEdit; edt4: TEdit; lbl1: TLabel; lbl2: TLabel; lbl3: TLabel; lbl4: TLabel; Label1: TLabel; btn1: TButton; procedure btn1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; a, b, c, d, e, f : Real; implementation {$R *.dfm} procedure TForm1.btn1Click(Sender: TObject); begin a := StrToFloat(edt1.Text); b := StrToFloat(edt2.Text); c := StrToFloat(edt3.Text); d := a*b*c; f := Power(d, 1.0/3.0) e := frac (f) ; edt4.text := FloatToStr (e) ; end; end. заранее благодарен Последний раз редактировалось kami, 01.10.2010 в 22:02. |
#2
|
||||
|
||||
![]() Если правильно понял, то НЕ надо дать возможность ввести в едит отрицательные числа (точнее вывести ошибку).
Код:
procedure TForm1.btn1Click(Sender: TObject); begin if(StrToInt(Edit1.Text) < 0) then begin ShowMessage('Error. Можно вводить только положительные числа'); Exit; end; /// так же сделать и для других двух едитов ... ЗЫ если же человек введет в едит не цифры, то полетит ошибка перевода, ее можно отловить например тем же Try...Except... end; Помогаю за Спасибо ![]() Последний раз редактировалось v1s2222, 01.10.2010 в 22:22. |
#3
|
|||
|
|||
![]() Если просто "отбросить" минус, то как-то так:
Код:
a := Abs(StrToFloat(edt1.Text)); b := Abs(StrToFloat(edt2.Text)); c := Abs(StrToFloat(edt3.Text)); Если заставить пользователя вводить только положительные числа, то можно сделать двумя способами: 1. В принципе сделать так, что бы он не мог ввести отрицательное число. Для всех TEdit сделать такого рода обработчик на OnKeyPress Код:
procedure TForm1.EditKeyPress(Sender : TObject; var Key : Char); begin If Not (Key In [0..9,#8]) Then Key := #0; end; Код:
a := StrToFloat(edt1.Text); if a < 0 Then Begin ShowMessage('a < 0'); Exit; End; b := StrToFloat(edt2.Text); if b < 0 Then Begin ShowMessage('b < 0'); Exit; End; c := StrToFloat(edt3.Text); if c < 0 Then Begin ShowMessage('c < 0'); Exit; End; |
#4
|
|||
|
|||
![]() спасибо, разобрался )
|