Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 숫자를 나눌 때 소수점 이하 자릿수 계산

<시간/>

num1과 num2라는 두 개의 정수가 주어지고 작업은 num1을 num2로 나누고 주어진 숫자를 나눌 때 소수점 이하 자릿수를 계산하는 것입니다.

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

설명 - 2를 5로 나눌 때 즉 ? =0.4이므로 소수점 이하 자릿수는 1이므로 개수는 1입니다.

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

설명 − 어떤 숫자를 0으로 나누면 오류가 반환되고 프로그램이 비정상적으로 종료됩니다.

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

설명 − 2를 3으로 나눌 때, 즉 2/3 =0.666..., 소수점 이하 자릿수는 무한이므로 무한으로 인쇄합니다.

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.

  • num1과 num2라는 두 개의 변수를 입력합니다.

  • 소수의 개수를 저장할 변수 count를 생성하고 0으로 초기화

  • unordered_map 유형의 변수 um 생성

  • num1%num2 !=0

    동안 루프 시작
  • 루프 내에서 num1%num2

    로 num1을 설정합니다.
  • count 값을 1 증가

  • um.find(num1) !=um.end()인지 확인한 다음 -1을 반환합니다.

  • 루프 외부에서 count의 값을 반환합니다.

  • 결과를 인쇄하십시오.

#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