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

โปรแกรม C++ เช็คเลขอาร์มสตรอง


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

3 = 3^1
153 = 1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153
371 = 3^3 + 7^3 + 1^3 = 27 + 343 + 1 = 371
407 = 4^3 + 0^3 + 7^3 = 64 +0 + 343 = 407

โปรแกรมเช็คเลขว่าเป็นเลขอาร์มสตรองหรือไม่ มีดังนี้

ตัวอย่าง

#include <iostream>
#include <cmath<
using namespace std;
int main() {
   int num = 153, digitSum, temp, remainderNum, digitNum ;
   temp = num;
   digitNum = 0;
   while (temp != 0) {
      digitNum++;
      temp = temp/10;
   }
   temp = num;
   digitSum = 0;
   while (temp != 0) {
      remainderNum = temp%10;
      digitSum = digitSum + pow(remainderNum, digitNum);
      temp = temp/10;
   }
   if (num == digitSum)
   cout<<num<<" is an Armstrong number";
   else
   cout<<num<<" is not an Armstrong number";
   return 0;
}

ผลลัพธ์

153 is an Armstrong number

ในโปรแกรมข้างต้นจะกำหนดว่าหมายเลขที่กำหนดเป็นหมายเลขอาร์มสตรองหรือไม่ ทำได้โดยใช้หลายขั้นตอน ขั้นแรกพบจำนวนหลักในตัวเลข ทำได้โดยการเพิ่มหนึ่งไปยัง digitNum สำหรับแต่ละหลัก

สิ่งนี้แสดงให้เห็นโดยข้อมูลโค้ดต่อไปนี้ -

temp = num;
digitNum = 0;
while (temp != 0) {
   digitNum++;
   temp = temp/10;
}

หลังจากที่ทราบจำนวนหลักแล้ว digitSum จะถูกคำนวณโดยการบวกแต่ละหลักยกกำลังของ digitNum เช่น จำนวนหลัก ซึ่งสามารถเห็นได้ในข้อมูลโค้ดต่อไปนี้

temp = num;
digitSum = 0;
while (temp != 0) {
   remainderNum = temp%10;
   digitSum = digitSum + pow(remainderNum, digitNum);
   temp = temp/10;
}

หากตัวเลขเท่ากับ digitSum แสดงว่าตัวเลขนั้นเป็นหมายเลข Armstrong และพิมพ์ออกมา ถ้าไม่อย่างนั้นก็ไม่ใช่หมายเลขอาร์มสตรอง ซึ่งเห็นได้ในตัวอย่างโค้ดด้านล่าง

if (num == digitSum)
cout<<num<<" is an Armstrong number";
else
cout<<num<<" is not an Armstrong number";