整数相除

原创 2013年12月03日 18:34:34

  • /***********************************************************************

  •  Description  : 整数相除。

  •  Input        : unsigned int dividend :被除数,取值为无符号整数。

  •                 unsigned int divisor: 除数,取值为无符号整数。

  •  Output       : Char *pResult       : 运算结果。

  •  Return Value : 0:成功; -1:失败;

  • ***********************************************************************/

  • int IntegerDivision (unsigned int dividend,  

  •                            unsigned int divisor,

  •                            Char *pResult); 

说明:

  1. Char *pResult的空间由调用者提供,五位小数,返回失败;小数部分超出五位,四舍五入

  2. 存储结果以字符串形式显示,整数和小数部分需加上小数点。如结果为2.05,则输出的结果为”2.05”。

我的答案只能是五位及以下的整数相除,否则会有bug,谁知道改进的话,求指导

#include <iostream>

#include <stdlib.h>
#include <string>
using namespace std;


int IntegerDivision (unsigned int dividend,  unsigned int divisor,char *pResult)
{
/*在这里完成代码*/
if (dividend)
{
int zen;
int chu = dividend * 100000;
    zen = chu/divisor;
    int fMod;
fMod = (chu%divisor*10) / divisor;
if (fMod > 5) 
{
zen++;
}
int m = 0;
while (zen % 10 == 0 && m < 5)
{
zen = zen / 10;
m = m + 1;
}
char num[18];
itoa(zen, num, 10);
int d = strlen(num);
    if (m == 5)
    {
if (d > 10)
{
return -1;
}
else
{
num[d] = '\0';
pResult = num;
for (int k = 0; k <= d; k++)
{
cout << pResult[k];
  }
return 0;
}
    }
else
{
if (d - (5 - m) > 10)
{
return -1;
}
else
{
char  num1[18];
for (int g = 0; g < d; g++)
{
num1[g] = num[g];
}

num1[d - (5 - m)] = '.';

for (int f = d - (5 - m); f < d; f++)
{
for (int h = f + 1; h < d+1; h++)
{
num1[h] = num[f];
}

}
num1[d+1] = '\0';
pResult = num1;
// for (int t = 0; t <= d+1; t++)
// {
// cout << pResult[t];
// }
return 0;
}
}
}
else
return -1;
}




int main()
{
char Result[100] = "0";
    IntegerDivision(12000, 2, Result);
return 0;
}

Java实现两个整数相除

public class DeleTwoNum { public static void main(String[] args){ int a = 7; int b = 300; ...
  • fso918
  • fso918
  • 2014年02月13日 13:34
  • 1351

LintCode_两个整数相除

笔试面试算法题
  • Tina_yaoyao
  • Tina_yaoyao
  • 2015年11月27日 15:55
  • 905

Go语言核心之美 2.1-整数

第二章 序 在计算机底层,一切都是比特位。然而计算机一般都操作固定大小的数,称之为字(word)。字会被解释为整数、浮点数、比特位数组、内存地址等,这些字又可以进一步聚合成数据包(packet)、像...
  • abv123456789
  • abv123456789
  • 2016年03月16日 13:44
  • 3403

5.divide-two-integers(两个整数相除)

5.divide-two-integers(两个整数相除) 链接:http://www.lintcode.com/zh-cn/problem/divide-two-integers/ 将两个整数相除,...
  • baolinq
  • baolinq
  • 2017年07月01日 13:26
  • 354

大数的四则运算之除法----Java代码实现

声明:参考博文http://blog.csdn.net/sunkun2013/article/details/11833515 最后的思想实现的大数相除,以便自己以后查阅学习,此博主给出的详细图解,...
  • nshr678
  • nshr678
  • 2017年08月04日 18:43
  • 456

大数相除算法

简介在实际的项目中,同事在移植一个算法时候碰到要进行64位整数的除法运算。找了一下一下,Linux内核中有支持该运算的函数do_div(),该函数在 Linux/arch/arm/include/as...
  • encourage2011
  • encourage2011
  • 2016年08月05日 21:38
  • 3682

大数运算(三)——大数相除求余数和商

大数相除 描述:输入两个超长的整型构成的字符串,使用空格隔开,求前者除以后者的余数输入输出格式要求输入的字符串最大长度为100个字符,输出商和余数,之间用空格隔开,...
  • u012260238
  • u012260238
  • 2015年09月14日 13:54
  • 2149

辗转相除算法原理

 在学算法的过程中,总是以辗转相除算法求最大公约数开始。但是一直搞不懂辗转相除算法的原理,(表示很惭愧,还不如小学生),转载记录一下 在中国古代就有一个很好的算法来计算a,b的最大公约数(a,...
  • fanfan199312
  • fanfan199312
  • 2015年07月31日 10:07
  • 1368

超大整数相除

问题描述 求两个大的正整数相除的商 输入数据 第 1 行是测试数据的组数n,每组测试数据占2 行,第1 行是被除数,第2 行是除数。 每组测试数据之间有一个空行,每行数据不超过100 个字符 输出要求...
  • zhendongzd
  • zhendongzd
  • 2016年10月04日 23:54
  • 166

华为机试—整数相除

两个整数相除,将结果用字符串返回。如果是循环小数,将循环的位用括号括起来。 函数原型为 void div(const int a,const int b,char *str) 输入:1...
  • wtyvhreal
  • wtyvhreal
  • 2015年01月04日 00:40
  • 16997
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:整数相除
举报原因:
原因补充:

(最多只允许输入30个字)