PDA

Просмотр полной версии : Сложение 2 самых больших цифр в числе


fokuuus
19.10.2012, 18:51
Нужно сделать программку с функцией: есть 3 цифровое число , нужно 2 его самые большие цифры умножить , например есть 128 , 2*8 = 16 , вот чтобы это делала программа , но этот по моему мнению "правильный" код подчеркивает и пишет еррор при компиляции , можете подсказать в чем ошибка? и стоит ли использовать q := 100*a+10*b+c; такой тип определения первой , второй и третьей цифры? лучше делать через деление без остатка?
procedure TForm3.Button1Click(Sender: TObject);
var a, b, c, q :double;
begin
q := StrToFloat (Edit1.Text);
q := 100*a+10*b+c;

if a>c and b>c then
Edit2.Text:=FloatToStr(a*b);

if a>b and c>b then
Edit2.Text:=FloatToStr(a*c);

if b>a and c>a then
Edit2.Text:=FloatToStr(b*c);
end;

end.
[Ссылки могут видеть только зарегистрированные и активированные пользователи] ([Ссылки могут видеть только зарегистрированные и активированные пользователи])
[Ссылки могут видеть только зарегистрированные и активированные пользователи] ([Ссылки могут видеть только зарегистрированные и активированные пользователи])

metraz
19.10.2012, 20:00
Код у тебя странный какой то, делаешь операции с a,b,c , когда им даже не заданы значения.
procedure TForm3.Button1Click(Sender: TObject);
var a, b, c, q :double;
E: array [1..3] of double;
i:byte;
begin
i:=1;
q := StrToFloat (Edit1.Text);
repeat
E[i]:=q mod 10;
q:=q div 10;
inc(i);
until q=0;
if E[1]>E[3] and E[2]>E[3] then
Edit2.Text:=FloatToStr(E[1]*E[2]);
if E[1]>E[2] and E[3]>E[2] then
Edit2.Text:=FloatToStr(E[1]*E[3]);
if E[2]>E[1] and E[3]>E[1] then
Edit2.Text:=FloatToStr(E[2]*E[3]);
Накатал кое как сам. Было лень все грамотно делать)

fokuuus
19.10.2012, 21:40
Код у тебя странный какой то

но по идее он же должен работать?

metraz
19.10.2012, 23:25
но по идее он же должен работать?

Нет, ты нигде не задал значения a,b,c

Your_Friend
28.10.2012, 20:37
но по идее он же должен работать?

Там где тебе красным подчеркнуто - в скобки сравниваемые элементы взять нужно.