在C ++中对小数点后的位数进行计数

我们给了两个整数,分别是num1和num2,任务是将num1除以num2,并在将这些给定的数字除以十进制后计算位数。

例如

Input − num1 = 2, num2 = 5Output − count is 1

解释-当我们将2除以5即?= 0.4,因此十进制后的数字为1,因此计数为1。

Input − num1 = 2, num2 = 0Output − Floating point exception (core dumped)

解释-当我们将任何数字除以0时,将返回错误并异常终止程序。

Input − num1 = 2, num2 = 3Output − Infinite

解释-当我们将2除以3即2/3 = 0.666 ...时,十进制后的数字是无限的,因此我们将打印无限。

以下程序中使用的方法如下

  • 输入两个变量,比如num1和num2

  • 创建一个变量count以存储十进制数的计数并将其初始化为0

  • 创建unumed_map类型的变量um

  • num1%num2!= 0时开始循环

  • 在循环内,将num1设置为num1%num2

  • 将count的值增加1

  • 检查um.find(num1)!= um.end()然后返回-1

  • 在循环外,返回计数值。

  • 打印结果。

示例

#include <iostream>

#include <unordered_map>

using namespace std;

int countdigits(int x, int y){

   int result = 0; // result variable

   unordered_map<int, int> mymap;

   // calculating remainder

   while (x % y != 0){

      x = x % y;

      result++;

      if (mymap.find(x) != mymap.end()){

         return -1;

      }

      mymap[x] = 1;

      x = x * 10;

   }

   return result;

}

int main(){

   int res = countdigits(2, 5);

   (res == -1)? cout << "count is Infinty" : cout <<"count is "<<res;

   return 0;

}

输出结果

如果运行上面的代码,我们将获得以下输出-

count is 1

以上是 在C ++中对小数点后的位数进行计数 的全部内容, 来源链接: utcz.com/z/347418.html

回到顶部