TYVJ1040(表达式计算)

整体的表达式计算采取倒叙计算,用a[]表示总和,b[]表示要加的数。

program P1040;

const
	maxn=1500;

var
	tot,i,len:longint;
	a,b:array [0..maxn] of longint;
	s:ansistring;
	
procedure sum;
var
	ii:longint;
begin
	for ii:=1 to len do//存的时候是反着存的,即数的最后一位表示位置1,这样就实现了个位的对齐。
		begin
			a[ii]:=a[ii]+b[ii];
			a[ii+1]:=a[ii+1]+a[ii] div 10;
			a[ii]:=a[ii] mod 10;
		end;
end;
	
procedure print;
var
	i:longint;
begin
	i:=len;//从最长的位置向后找。
	while a[i]=0 do dec(i);//去掉首位是0的部分。
	while i>0 do
		begin
			write(a[i]);
			dec(i);
		end;
end;	

begin
	assign(input,'P1040.in'); reset(input);
	assign(output,'P1040.out'); rewrite(output);
	
	readln(s);
	len:=length(s);
	tot:=0;
	for i:=len downto 1 do
		begin
			if s[i]<>'+' then
				begin
					inc(tot);
					b[tot]:=ord(s[i])-48;//将一个加数存入数组中。
				end
			else
				begin
					if s[i]='+' then//直到出现加命令进行计算。
						begin
							sum;
							fillchar(b,sizeof(b),0);//计算完成把b数组初始化。
							tot:=0;//数组清零。
						end;
				end;
			if i=1 then sum;//还要把第一个数加上。
		end;
	print;//输出结果
	
	close(input); close(output);
end.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值