首页 > 文章列表 > C++程序:寻找四舍五入的数字以拯救王国

C++程序:寻找四舍五入的数字以拯救王国

四舍五入 数字 王国
398 2023-09-14

假设我们有一个字符串 S,其中给出了十进制实数。有一个国王叫阿迈勒, 他的儿子比马尔在一个王国里。还有其他公民。他们幸福地生活直到伟大 王国里出现了麻烦。怪物在那里定居。最伤害那些怪 给王国带来的怪物是他们热爱高精度的数字。因此, 王国治疗师已经与出售物品的商人进行了三次约会,确切地说 0.273549107 药水桶。为了以某种方式解决这个问题,阿迈勒国王发布了一项命令 必须将所有数字四舍五入到最接近的整数以简化计算。具体来说, 顺序如下 -

  • 如果一个数字的整数部分不以数字 9 结尾且其小数部分严格小于 0.5,则向上舍入数字与整数部分一致。

  • 如果数字的整数部分不以数字 9 结尾且小数部分不小于 0.5,则向上舍入的数字为如果数字的整数部分的最后一位数字加 1,则获得该数字。

  • 如果数字的整数部分以数字 9 结尾,则要对数字进行四舍五入,请将其报告为“不可能”。

我们必须实现逻辑来获取四舍五入的数字。

问题类别

要解决这个问题问题,我们需要操作字符串。编程语言中的字符串是 存储在特定的类似数组的数据类型中的字符流。多种语言 将字符串指定为特定数据类型(例如 Java、C++、Python);和其他几种语言 将字符串指定为字符数组(例如 C)。字符串在编程中很有用,因为它们 通常是各种应用程序中的首选数据类型,并用作输入的数据类型 和输出。有各种字符串操作,例如字符串搜索、子字符串生成、 字符串剥离操作、字符串翻译操作、字符串替换操作、字符串 反向操作等等。查看下面的链接以了解字符串如何 用于 C/C++ 中。

https://www.tutorialspoint.com/cplusplus/cpp_strings.htm

https://www.tutorialspoint.com/cprogramming/c_strings。 htm

所以,如果我们问题的输入是这样的 S = "3.14159",那么输出将是 3

步骤

为了解决这个问题,我们将遵循以下步骤 -

ret := a blank string
p := position of '.' in S
if S[p - 1] is same as '9', then:
   return "Not Possible"
Otherwise
   ret := ret concatenate (substring of S from index 0 to p-1) if S[p+1] < '5', otherwise (substring of S from index 0 to p-2) concatenate (S[p - 1] + 1)
return ret

示例

让我们看看以下实现,以便更好地理解 -

#include <bits/stdc++.h>
using namespace std;
string solve(string S){
   string ret = "";
   int p = S.find('.');
   if (S[p - 1] == '9')
      return "Not Possible";
   else
      ret += (S[p + 1] < '5' ? S.substr(0, p) : S.substr(0, p - 1) + string(1, (S[p - 1] + 1)));
      return ret;
}
int main(){
   string S = "3.14159";
   cout << solve(S) << endl;
}

输入

"3.14159"

输出

3