| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦   
共有 452 人关注过本帖
标题:如何用vb实现两个128位数的加减法计算器?
收藏  订阅  推荐  打印
fansiming1
Rank: 1
等级:新手上路
帖子:4
积分:154
注册:2008-8-30
如何用vb实现两个128位数的加减法计算器?

好像是用数组实现吧.....不太会~有没有高人解答一下~多谢
2008-8-30 19:21
三断笛
Rank: 12Rank: 12Rank: 12
等级:版主
威望:9
帖子:907
积分:10007
注册:2007-5-24

是啊 两个字符串 模拟手工加减法

滚滚红尘中的白痴..........
2008-8-30 20:38
fansiming1
Rank: 1
等级:新手上路
帖子:4
积分:154
注册:2008-8-30
回复 2# 三断笛 的帖子

两个字符串?能说详细些吗?谢谢
2008-8-30 20:43
我是菜鸟哦
Rank: 12Rank: 12Rank: 12
等级:版主
威望:11
帖子:650
积分:7270
注册:2007-5-4

字符串不就是数组吗?(C里是,VB类似)

偶是菜鸟鸟偶惧WHO?!!!!
2008-8-30 20:54
multiple1902
Rank: 12Rank: 12Rank: 12
等级:版主
威望:40
帖子:4473
积分:45616
注册:2007-2-9

就是数组嘛

抱歉不是VB语言的。
复制内容到剪贴板
代码:
    高精度加法
function hiPlus(s1,s2:string):string;
var a,b:array[1..100] of byte;
    k,l1,l2,i,j:integer;tmpstr:string;
begin
  l1:=length(s1);l2:=length(s2);
  fillchar(a,sizeof(a),0);
  fillchar(b,sizeof(b),0);
  if l1>l2 then j:=l1 else j:=l2;
  k:=0;
  for i:=l1 downto 1 do
    begin
      inc(k);
      a[k]:=ord(s1[i])-48;
    end;
  k:=0;
  for i:=l2 downto 1 do
    begin
      inc(k);
      b[k]:=ord(s2[i])-48;
    end;
  for i:=1 to j do
    begin [
      a[i]:=a[i]+b[i];
      if a[i]>=10 then
        begin
          a[i]:=a[i]-10;
          a[i+1]:=a[i+1]+1;
        end; ]
    end;
  if a[j+1]=0 then j:=j-1;
  tmpstr:='';
  for i:=j+1 downto 1 do
    tmpstr:=tmpstr+chr(a[i]+48);
  hiPlus:=tmpstr
end;  
    高精度减法
if a[i]<b[i] then
  begin
    a[i+1]:=a[i+1]-1;
    a[i]:=a[i]+10;
  end;
a[i]:=a[i]-b[i];

“高考”这个词在耳边不断萦绕,心中的激动不言而喻。写下一句话,一起努力。Let's struggle together.
2008-8-30 21:47
fansiming1
Rank: 1
等级:新手上路
帖子:4
积分:154
注册:2008-8-30

啊......谁能用vb写一下呢....看不太懂....谢谢!
2008-8-30 21:52
multiple1902
Rank: 12Rank: 12Rank: 12
等级:版主
威望:40
帖子:4473
积分:45616
注册:2007-2-9

var 是定义变量,类似于dim。
冒号前面是变量名,后面是数据类型。
array说明是数组,of后面是基类型。

fillchar是数组初始化,全部赋为0.
length是取字符串长度,相当于Len。
冒号等于是赋值,想当于=的赋值。
for i:=i1 downto 1 do 相当于 For i=i1 To 1 Step -1
for的主体是for后面的一条语句。
认为begin和对应的end之间是一条复合语句,即一条语句。

inc(k)相当于k=k+1;
ord是取ASCII码,相当于Asc函数。

上面的函数是高精度加法的,把中括号的部分换成下面的程序段就是减法的。

“高考”这个词在耳边不断萦绕,心中的激动不言而喻。写下一句话,一起努力。Let's struggle together.
2008-8-31 10:34
multiple1902
Rank: 12Rank: 12Rank: 12
等级:版主
威望:40
帖子:4473
积分:45616
注册:2007-2-9

如果会Delphi的,看这段程序应该不难。

高精度计算是一种算法,用什么语言描述无关紧要,重要的是算法的思想。

“高考”这个词在耳边不断萦绕,心中的激动不言而喻。写下一句话,一起努力。Let's struggle together.
2008-8-31 10:35
共有 451 人关注过本帖
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.049984 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved