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

Disarium Number พร้อมตัวอย่างใน C ++?


ตัวเลขที่ผลรวมของหลักที่ขับเคลื่อนด้วยตำแหน่งตามลำดับเท่ากับตัวเลขนั้นเรียกว่าตัวเลข disarium

ฟังก์ชัน noOfDigits(int num) ใช้ตัวเลขและส่งคืนจำนวนหลักโดยหารตัวเลขด้วย 10 อย่างต่อเนื่องในขณะที่เหลือเพียงตำแหน่งเดียวเท่านั้น ในการวนซ้ำแต่ละครั้ง ตัวแปรตัวเลขจะเพิ่มขึ้นเพื่อให้ติดตามตัวเลขและจะถูกส่งคืนเมื่อลูป while สิ้นสุด

int noOfDigits(int num){
   int digits = 0;
   int temp = num;
   while (temp){
      temp= temp/10;
      digits++;
   }
   return digits;
}

ต่อไป isDisarium(int num) เป็นฟังก์ชันบูลีนที่ใช้ตัวเลขและตรวจสอบว่าเป็นหมายเลข Disarium หรือไม่ ใช้หลักขวาสุดด้วยหมายเลข mod 10 และจ่ายไฟให้กับหลักที่วางไว้ในระบบตัวเลข ผลลัพธ์จากการเพิ่มจำนวนจะถูกบวกเข้ากับผลรวม while loop ทำงานจนไม่มีตัวเลขเหลือ หากผลรวมเท่ากับ num จะคืนค่า true มิฉะนั้นจะคืนค่าเท็จ

isDisarium(int num){
   int digits = noOfDigits(num);
   int sum = 0;
   int temp = num;
   while (temp){
      int rightDigit = temp%10;
      sum = sum + pow(rightDigit, digits--);
      temp = temp/10;
   }
   return (sum == num);
}

ตัวอย่าง

ให้เราดูการดำเนินการต่อไปนี้เพื่อตรวจสอบว่าตัวเลขเป็นตัวเลข disarium หรือไม่

#include<iostream>
#include<math.h>
using namespace std;
int noOfDigits(int num){
   int digits = 0;
   int temp = num;
   while (temp){
      temp= temp/10;
      digits++;
   }
   return digits;
}
bool isDisarium(int num){
   int digits = noOfDigits(num);
   int sum = 0;
   int temp = num;
   while (temp){
      int rightDigit = temp%10;
      sum = sum + pow(rightDigit, digits--);
      temp = temp/10;
   }
   return (sum == num);
}
int main(){
   int num = 518;
   if( isDisarium(num))
      cout <<num<<" is a Disarium Number"<<endl;
   else
      cout << num<<" is not a Disarium Number"<<endl;
   return 0;
}

ผลลัพธ์

รหัสข้างต้นจะสร้างผลลัพธ์ต่อไปนี้ -

518 is a Disarium Number