Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 01.10.2010, 21:50
kami kami вне форума
Прохожий
 
Регистрация: 01.10.2010
Сообщения: 4
Репутация: 10
По умолчанию Лаба по делфи

Задача звучит следующим образом:
Вычислить дробную часть среднего геометрического трех заданных положительных чисел.

подскажите как сделать, чтобы программа только с положительными числами работала

Код:
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  
Старый 01.10.2010, 22:19
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

Если правильно понял, то НЕ надо дать возможность ввести в едит отрицательные числа (точнее вывести ошибку).
Код:
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  
Старый 01.10.2010, 22:30
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Если просто "отбросить" минус, то как-то так:
Код:
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;
2. Сделать проверку и выводить сообщение:
Код:
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  
Старый 01.10.2010, 23:23
kami kami вне форума
Прохожий
 
Регистрация: 01.10.2010
Сообщения: 4
Репутация: 10
По умолчанию

спасибо, разобрался )
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:32.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025