![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите с вычислением
Mahno © (2008-09-18 11:03:00)Имеется четыре поля для ввода чисел. все поля умножаются между собой,
пример:
X:=A*B*C*D;
если поле B=0 то результат: X=0
как правильно написать формулу при таком случае.
можно так: if B=0 then X:=A*C*D но если два поля пустые т.е. B=0 и C=0?
Vlad Oshin (2008-09-18 11:50:00) [1]привязка массива к окнам ввода
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private { Private declarations }
public { Public declarations }
Procedure Change(Sender:tObject);
end;
var
Form1: TForm1;
m:array[0..3] of integer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
x:integer;
i:integer;
begin
x:=1;
for I := 0 to 3 do
if m[i]<>0 then x:=x*m[i];
ShowMessage(inttostr(x));
end;
procedure TForm1.Change(Sender: tObject);
begin
Pinteger(tEdit(Sender).Tag)^:=strtoint(tEdit(Sender).Text);
end;
procedure TForm1.FormCreate(Sender: TObject);
var
e:tedit;
i:integer;
begin
for i := 0 to 3 do
begin
m[i]:=random(10);
e:=tEdit.Create(form1);
e.Parent:=form1;
e.top:=i*30;
e.Name:='Edit'+inttostr(i);
e.Text:=inttostr(m[i]);
e.Tag:=LongInt(@m[i]);
e.Visible:=true;
e.OnChange:=Change;
end;
end;
Правильный$Вася (2008-09-18 11:31:00) [2]
> Игнорировать нулевые множители?if B = 0 then B:= 1;if C
> = 0 then C:= 1;
это фальсификация данных ;)
получается 0=1, а это....
Mahno (2008-09-18 11:20:00) [3]понятно
DrPass (2008-09-18 11:14:00) [4]
> if B=0 then X:=A*C*D но если два поля пустые т.е. B=0 и
> C=0?
Тебе чего надо? Игнорировать нулевые множители?
if B = 0 then B:= 1;
if C = 0 then C:= 1;
X:=A*B*C*D;
Mahno (2008-09-18 11:14:00) [5]
> int64 (18.09.08 11:08) [4]
Да именно
Mahno (2008-09-18 11:13:00) [6]Да совершенно верно
Azize (2008-09-18 11:10:00) [7]Насколько я понимаю тебе не надо чтобы в случае когда какой-либо компонет был равен нулю он участвовал в перемножении?
Тогда так
mas:array[1..3] of ...;
....
x:=1;
For i:=0 to 3 do
if mas[i]<>0 then x:=x*mas[i];
int64 (2008-09-18 11:08:00) [8]Mahno (18.09.08 11:03)
Я проведу сеанс телепатии.
Тебе при перемножении надо игнорировать незаполненные поля?
Vlad Oshin (2008-09-18 11:07:00) [9]не понятно..
любое нулевое число не учавствует в умножении что ли?
Плохиш (2008-09-18 11:07:00) [10]
> Mahno (18.09.08 11:03)
Я тебе намекну. На X тоже умножать можно, так же как и его на что-то.
AlekseyB (2008-09-18 11:05:00) [11]В любом случае, умножение на 0 даст 0, другое дело, если предусмотреть то, если встречается 0, то его игнорировать