整数相除

原创 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;
}

相关文章推荐

整数因子相除

  • 2016年01月07日 09:25
  • 180KB
  • 下载

[华为机试练习题]53.整数相除(AC 但还有bug)

Char *pResult的空间由调用者提供,结果中最多保存十位整数,五位小数,整数部分超出十位,返回失败;小数部分超出五位,四舍五入; 存储结果以字符串形式显示,整数和小数部分需加上小数点。如结果...

【LeetCode-面试算法经典-Java实现】【029-Divide Two Integers(两个整数相除)】

【029-Divide Two Integers(两个整数相除)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Divide two integers without u...

超大整数相除

问题描述 求两个大的正整数相除的商 输入数据 第 1 行是测试数据的组数n,每组测试数据占2 行,第1 行是被除数,第2 行是除数。 每组测试数据之间有一个空行,每行数据不超过100 个字符 输出要求...

LeetCode OJ 之 Divide Two Integers (两个整数相除)

题目: Divide two integers without using multiplication, division and mod operator. 求两个整数相除的结果,不能使用...

LeetCode 29 Divide Two Integers(两个整数相除)(*)

翻译不用乘法、除法、取余操作,将两个数相除。如果它溢出了,返回MAX_INT原文Divide two integers without using multiplication, division a...
  • NoMasp
  • NoMasp
  • 2015年11月17日 20:04
  • 3771

Leetcode020--两个整数相除

两个整数相除,不使用加减乘除法

Java进阶(五十二)两个整数相除得到小数点并保留两位小数的方法

Java进阶(五十二)两个整数相除得到小数点并保留两位小数的方法  当两个整数相除时,由于小数点以后的数字会被截断,使运算结果为整数,故此时若希望得到运算结果为所预期的浮点数,则此时必须将两整数其一或...

大整数相除取余数

写了一个大整数相除取余数的算法,没有在OJ上测试过,有机会测试一下。 题目:给定两个字符串s1和s2,求s1除以s2的余数。#include #include #include #includ...

2.4-整型变量-溢出与整数相除

整型变量即仅能保存整数的变量,C++中有5种基本的整数类型可供使用: 类别 数据类型 最小占用内存 注 字符型 char 1 byte   整型 sho...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:整数相除
举报原因:
原因补充:

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