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

หาตัวเลขที่ใกล้ที่สุดกับ n และหารด้วย m ลงตัวใน C++

สมมติว่ามีจำนวนเต็มสองจำนวน n และ m เราต้องหาตัวเลขที่ใกล้ที่สุดกับ n และหารด้วย m ลงตัว หากมีตัวเลขมากกว่าหนึ่งตัว ให้แสดงตัวเลขที่มีค่าสัมบูรณ์สูงสุด ถ้า n หารด้วย m ลงตัว ให้คืนค่า n ดังนั้นถ้า n = 13, m = 4 ผลลัพธ์คือ 12

เพื่อแก้ปัญหานี้ เราสามารถทำตามขั้นตอนเหล่านี้:

  • ให้ q := n/m และ n1 := m*q
  • ถ้า n * m > 0 แล้ว n2 := m * (q + 1) มิฉะนั้น n2 := m * (q - 1)
  • ถ้า |n – n1| < |n – n2| ให้คืนค่า n1 มิฉะนั้นคืนค่า n2

ตัวอย่าง

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

int findClosest(int n, int m) {
    int q = n / m;
    int n1 = m * q;
    int n2 = (n * m) > 0 ? (m * (q + 1)) : (m * (q - 1));
    if (abs(n - n1) < abs(n - n2))
        return n1;
    return n2;
}

int main() {
    int n = 13, m = 4;
    cout << "Closest for n = " << n << ", and m = " << m << ": " << findClosest(n, m) << endl;
    n = 0; m = 8;
    cout << "Closest for n = " << n << ", and m = " << m << ": " << findClosest(n, m) << endl;
    n = 18; m = -7;
    cout << "Closest for n = " << n << ", and m = " << m << ": " << findClosest(n, m) << endl;
}

ผลลัพธ์

Closest for n = 13, and m = 4: 12
Closest for n = 0, and m = 8: 0
Closest for n = 18, and m = -7: 21