在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