Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

นับจำนวนหลักหลังจุดทศนิยมเมื่อหารตัวเลขใน C++

เราได้รับจำนวนเต็มสองตัว ให้เรียกว่า num1 และ num2 และงานคือหาร num1 ด้วย num2 และคำนวณจำนวนหลักหลังจุดทศนิยมเมื่อหารตัวเลขทั้งสองนี้

ตัวอย่าง

อินพุต – num1 = 2, num2 = 5 เอาต์พุต – count is 1

คำอธิบาย – เมื่อเราหาร 2 ด้วย 5 คือ 0.4 หลักหลังจุดทศนิยมคือ 1 ดังนั้น count คือ 1

อินพุต – num1 = 2, num2 = 0 เอาต์พุต – Floating point exception (core dumped)

คำอธิบาย – เมื่อเราหารตัวเลขใดๆ ด้วย 0 จะคืนค่า error และจบโปรแกรมอย่างผิดปกติ

อินพุต – num1 = 2, num2 = 3 เอาต์พุต – Infinite

คำอธิบาย – เมื่อเราหาร 2 ด้วย 3 คือ 0.666... หลักหลังจุดทศนิยมเป็นอันไม่สิ้นสุด ดังนั้นเราจะพิมพ์ infinite

วิธีการที่ใช้ในโปรแกรมด้านล่าง

  • รับตัวแปรสองตัว ให้เป็น num1 และ num2
  • สร้างตัวแปร count เก็บจำนวนหลักทศนิยม เริ่มต้นที่ 0
  • สร้างตัวแปร um ประเภท unordered_map
  • เริ่มลูป while num1 % num2 != 0
  • ในลูป ตั้งค่า num1 ด้วย num1 % num2
  • เพิ่มค่า count ขึ้น 1
  • ตรวจสอบ if um.find(num1) != um.end() แล้วคืนค่า -1
  • นอกลูป คืนค่าที่อยู่ใน count
  • พิมพ์ผลลัพธ์

ตัวอย่าง

#include <iostream>
#include <unordered_map>
using namespace std;

int countdigits(int x, int y){
    int result = 0;
    unordered_map<int, int> mymap;
    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