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

  • สร้างการนับตัวแปรเพื่อเก็บการนับจำนวนทศนิยมและเริ่มต้นด้วย 0

  • สร้างตัวแปร um ของประเภท unordered_map

  • เริ่มวนซ้ำในขณะที่ num1%num2 !=0

  • ภายในลูป ตั้งค่า num1 ด้วย num1%num2

  • เพิ่มมูลค่าการนับขึ้น 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