你能否善用身边的一切资源?请大家进来测试一下吧!顺便散分。 (300分)

H

hotyei

Unregistered / Unconfirmed
GUEST, unregistred user!
最近可能提问上了点瘾,而且可用分闲着也没用,散一散分吧。顺便考一考大家的对身边资源的发掘能力,题目是我偶尔听同事说起,是他在一家软件公司的面试题:你能否在三十分钟内完成一个四则运算计算器?界面要求:窗口上有两人Edit控件和一个Button控件,在Edit1中输入公式后,按下Button控件将结果写在Edit2上面。

如果你知道答案,其实一分钟也不需要。大家踊跃啊,对了,他面试的环境是新安装的机子,除了标准的D6/D7环境外,只有FastReport、RxLib、DevExpressBar、DBGridEh、DXGtird几个著名控件包。除此之外,你自己不能带任何资料去面试的!!
 
什么意思
 
就是:你能否在三十分钟内完成一个四则运算计算器?
 
能,这很简单。
 
充分利用自己收集的资源!可以做到的.
 
说个答案嘛。
 
假设用户不晓得windows自带了一个计算机器,
新建一application,一按钮,然后shellexecute调用之
 
to 刀剑如梦:这些资源不能带去,面试之前也不知道题目。
 
to jjqqw:
算是可以啦,不过30分钟能否完成?
 
to hotyei,我的第一反应就是这个,破釜沉舟就这么弄了,时间绰绰有余
 
to jjqqw:
您是第一个有分的。不过要控制计算器不太好弄,能否贴个代码上来?
 
to jjqqw:
是不能直接调用计算器啊,你如果调用也它的功能,将结果显示出来还算数。
 
我想这不难,但前提是你要学过(认真)数据结构这门课,因为书中就有这么一个算法,得用栈这种数据结构,把四则运算公式分解入栈,30分钟肯定可以.
 
似乎不用入栈吧,
是最简单的四则运算器啊,如果要是写过的话,用不了30分钟,
不过这种题目,地球上都难找
 
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin
winexec(pchar('C:/WINnt/system32/CALC.EXE'),SW_SHOW) ;
end;

end.
 
ShellExecute(handle,'open','CALC.exe',nil,nil,SW_ShowNormal);也行
 
就winexec(pchar('CALC.EXE'),SW_SHOW) ;就行了
连路径也不用写了,呵呵,我刚试验了一把,还真费了些时间,手生得要命。
 
to lich:
小弟见识浅,可否把你的代码贴出来,我想大家一定很希望见识见识.
还有"最简单的四则运算器"不会简单成只能做单加减或单乘除吧!
这样的运算成不:(1+2)*(3-4/5)-6
 
四则运算当然要求能运行包括小括号的公式。
 
这有何难????
看我的:

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
comobj, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation
{$R *.DFM}

function calculate(express:string):string;
var
vscript:variant;
begin
vscript:=createoleobject('scriptcontrol');
vscript.language:='javascript';
result:=vscript.eval(express);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.text:=calculate(edit1.text);
end;
end.
----------------------------------------------------------------------------------------
先在Edit1中输入算式(当然也可以做成按钮选择数字及符号,组合成一个字符串就行)就比如是Adang提到的吧,输入(1+2)*(3-4/5)-6, 按Button1,得结果 0.6000000000000001

-----------------------------------------------------------------------------------------
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
889
DelphiTeacher的专栏
D
顶部