Algorithm 版 (精华区)

发信人: Lerry (life is waiting...), 信区: Algorithm
标  题: [合集]超音速天文数字加法程序!终于比pineapple的快了!:P
发信站: 哈工大紫丁香 (2003年10月12日12:24:09 星期天), 站内信件


────────────────────────────────────────
 hewind (中国捣蛋研究院·院士)        于 2003年10月06日19:16:22 星期一 说道:

输入长度无限制~~~
http://202.118.250.9/borlandclub/bbs/dispbbs.asp?boardid=10&id=11
--------------------------------------------------------------
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <iostream>
#include "time.h"
#define MAX( a , b )  ( ( a > b ) ? ( a ) : ( b ) )
using namespace std ;
inline char* add( char *op1 , char *op2 )
{
  int len1 = strlen( op1 ) ;
  int len2 = strlen( op2 ) ;
  int maxlen = MAX( len1 , len2 ) ;
  char *res = new char[ maxlen + 2 ] ;
  res += maxlen + 1 ;
  *res = '\0' ;
  char* tp1 = op1 + len1 - 1 ;
  char* tp2 = op2 + len2 - 1 ;
  int add = 0 ;
  int sum ;
  while( tp1 >= op1 && tp2 >= op2 ){
    sum = *tp1-- + *tp2-- - '0' - '0' ;
    *--res = sum % 10 + add + '0' ;
    add = sum / 10 ;
  }
  while( tp1 >= op1 ){
    sum = *tp1-- + add - '0' ;
    *--res = sum % 10 + '0' ;
    add = sum / 10 ;
  }
  while( tp2 >= op2 ){
    sum = *tp2-- + add - '0' ;
    *--res = sum % 10 + '0' ;
    add = sum / 10 ;
  }
  if( add ){
    *--res = add + '0' ;
  }
  return res ;
}
int main()
{
  string op1 , op2 ;
  cout << "please input op1" << endl ;
  cin >> op1 ;
  cout << "pelase input op2" << endl ;
  cin >> op2 ;
  char *p = add( ( char * )op1.c_str() , ( char * )op2.c_str() ) ;    
  cout << p << endl ;
  delete[] p ;
  system( "pause" ) ;
}

────────────────────────────────────────
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:1.375毫秒