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

นับเลขฐานสิบหกใน C++


เราได้รับช่วงที่มีจุดเริ่มต้นและจุดสิ้นสุด และภารกิจคือการคำนวณการนับเลขฐานสิบหกหรือตัวอักษรที่มีอยู่ในช่วงที่กำหนด

ตัวอักษรฐานสิบหกคืออะไร

ในแง่คอมพิวเตอร์ เลขฐานสิบหกคือตัวเลขที่มีฐาน 16 ซึ่งหมายความว่าเลขฐานสองสามารถแสดงเป็น 16 บิตได้ ประกอบด้วยตัวเลขจำนวนเต็มตั้งแต่ 0-15 โดยที่ 10 แสดงเป็น A, 11 เป็น B, 12 เป็น C, 13 เป็น D, 14 เป็น E และ 15 เป็น F.

ดังนั้น ในโปรแกรมด้านล่าง งานของเราคือค้นหาว่าช่วงประกอบด้วยเลขฐานสิบหกหรือไม่

ตัวอย่าง

Input − start = 10, End = 13
Output − 4

คำอธิบาย − มีเลขฐานสิบหก 4 ตัวระหว่าง 10 ถึง 13 เช่น 10 คือ A, 11 คือ B, 12 คือ C และ 13 คือ D.

Input − start = 15, End = 16
Output − 1

คำอธิบาย − มีตัวอักษรฐานสิบหกเพียงตัวเดียว นั่นคือ 15 เนื่องจาก F และ 16 จะแสดงเป็น 10 ตามลำดับ

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

  • ใส่ range โดยเริ่มจากตัวแปร เช่น start และ end

  • ประกาศการนับตัวแปรเพื่อเก็บการนับและเริ่มต้นด้วย 0

  • เริ่มวนซ้ำโดยให้ i เริ่ม และจนกว่า i น้อยกว่าหรือเท่ากับสิ้นสุด

  • ภายในลูป ตรวจสอบว่า i มากกว่าหรือเท่ากับ 10 หรือไม่ และ i มากกว่าหรือเท่ากับ 15 แล้วจึงเพิ่มจำนวนขึ้น 1

  • มิฉะนั้น ตรวจสอบว่า i มากกว่า 15

  • จากนั้นตั้งค่าตัวแปรชั่วคราว temp ด้วยค่า i และเคลื่อนที่ในขณะที่ k ไม่เท่ากับ 0

  • และตรวจสอบว่า k%16 มากกว่าหรือเท่ากับ 10

  • เพิ่มจำนวนขึ้น 1

  • และ , ตั้งค่าอุณหภูมิโดย temp/16

  • ส่งคืนค่าจำนวน

  • พิมพ์ผลลัพธ์ .

ตัวอย่าง

#include <iostream>
using namespace std;
// Function to count the
// total number hexadecimal alphabet
int counthexa(int start, int end){
   int result = 0;
   for (int i = start; i <= end; i++){
      // All hexadecimal alphabets
      // from 10 to 15
      if (i >= 10 && i <= 15){
         result++;
      }
      // If i > 15 then perform mod by 16 repeatedly
      // till the number is > 0
      // If number % 16 > 10 then increase count
      else if (i > 15){
         int k = i;
         while (k != 0){
            if (k % 16 >= 10){
               result++;
            }
            k = k / 16;
         }
      }
   }
   return result;
}
// Main Function
int main(){
   int start = 10, end = 60;
   cout << "count is: "<<counthexa(start, end);
   return 0;
}

ผลลัพธ์

หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -

count is: 21