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

ค้นหาลูกบาศก์รูทของตัวเลขใน C++


เราจะมาดูวิธีหาลูกบาศก์รูทของตัวเลขกัน สมมติว่าตัวเลขคือ 27 แล้วลูกบาศก์รูทของตัวเลขนี้คือ 3 เพื่อแก้ปัญหานี้ เราจะกำหนดตรรกะของเราเองโดยไม่ต้องใช้ฟังก์ชันไลบรารี เราจะใช้วิธีการค้นหาแบบไบนารี เราต้องทำตามขั้นตอนเหล่านี้เพื่อแก้ปัญหานี้

สมมติว่าเรามีค่าธรณีประตู เช่น threshold =0.000001

  • เริ่มต้นค่าด้านซ้ายเป็น 0 และค่าด้านขวาเป็นตัวเลข

  • คำนวณกลาง :=(ซ้าย + ขวา)/2

  • หากค่าสัมบูรณ์ของ (ตัวเลข – กลาง 3) น้อยกว่าเกณฑ์ ให้คืนค่ากลางเป็นคำตอบ

  • ถ้า mid3 มากกว่าตัวเลข ให้ตั้งค่า right :=mid

  • ถ้า mid3 น้อยกว่าตัวเลข ให้ตั้งค่า left :=mid

ตัวอย่าง

#include<iostream>
#include<cmath>
using namespace std;
   double cubeRoot(int num) {
   double threshold = 0.000001;
   double left = 0, right = num;
   double mid;
   while(left <= right){
      mid = (left + right)/2;
      if(abs(num - (mid*mid*mid)) < threshold)
         return mid;
      if((mid*mid*mid) > num)
         right = mid;
      if((mid*mid*mid) < num)
         left = mid;
   }
}
int main() {
   int n = 3;
   cout << "cube root of 3 is: " << cubeRoot(n);
}

ผลลัพธ์

cube root of 3 is: 1.44225