Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Delphi]Определить имеется ли среди чисел a,b,c


Автор: Skvot 29.4.2009, 17:47
Определить имеется ли среди чисел a,b,c хотя бы одна пара взаимно противоположных чисел

unit Unit1;

interface

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

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

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Button1Click(Sender: TObject);
var a,b,c:integer;
begin
a:=StrToInt(edit1.text);
b:=StrToInt(edit2.text);
c:=StrToInt(edit3.text);
if a>=0 then if b>=0 then if c>=0 then Label1.caption:='Нет'
else Label1.caption:='Есть'
else Label1.caption:='Есть'
else if b>=0 then Label1.caption:='есть'
else
if c>=0 then Label1.caption:='есть'
else Label1.caption:='нет';
end;
end.

Вот написал.Ребят проверьте.Посоветуйте что нибудь

Автор: Silent 30.4.2009, 10:36
Непонятно что такое взаимно противоположные числа. Если, насколько следует из кода, это просто бимодальность представленных чисел, то процедуру вычисления можно упростить:
Код

procedure TForm1.Button1Click(Sender: TObject);
var a,b,c:integer;
begin
a:=StrToInt(edit1.text);
b:=StrToInt(edit2.text);
c:=StrToInt(edit3.text);
if (a+b+c=abs(a)+abs(b)+abs(c)) then Label1.Caption:='Нет'
else Label1.Caption:='Есть';
end;

Автор: Kakadu 30.4.2009, 15:38
Число проивоположно данному, если он в сумме с данным дает ноль. (Для меня это определение)
Код

procedure TForm1.Button1Click(Sender: TObject);
var a,b,c:integer;
begin
a:=StrToInt(edit1.text);
b:=StrToInt(edit2.text);
c:=StrToInt(edit3.text);
if ((a+b=0)or(c+b=0)or(a+c=0)) then Label1.Caption:='Есть'
else Label1.Caption:='Нет';
end;

Автор: grigiv 30.4.2009, 16:03
Код

if (a=-b) or (a=-c) or (b=-c) then Label1.Caption:='Есть'
else Label1.Caption:='Нет';

Автор: Dmi3ev 30.4.2009, 16:58
Kakadu, присоединяюсь...

Автор: Skvot 6.5.2009, 15:30
Блок схема

Автор: Kakadu 6.5.2009, 15:36
По-видимому надо возвращать true если среди трех чисел есть числа разных знаков.
Код

procedure TForm1.Button1Click(Sender: TObject);
var a,b,c:integer;
begin
a:=StrToInt(edit1.text);
b:=StrToInt(edit2.text);
c:=StrToInt(edit3.text);
if ((a*b<0)or(c*b<0)or(a*c<0)) then Label1.Caption:='Есть'
else Label1.Caption:='Нет';
end;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)