เราได้รับช่วงที่มีจุดเริ่มต้นและจุดสิ้นสุด และภารกิจคือการคำนวณการนับเลขฐานสิบหกหรือตัวอักษรที่มีอยู่ในช่วงที่กำหนด
ตัวอักษรฐานสิบหกคืออะไร
ในแง่คอมพิวเตอร์ เลขฐานสิบหกคือตัวเลขที่มีฐาน 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