เราได้รับจำนวนบวก สมมติว่า num และงานคือการคำนวณจำนวนการเปลี่ยนแปลงในไฟ LED ที่แสดงทีละรายการ เราจะถือว่าในตอนแรก LED ทั้งหมดดับและจะเริ่มตามค่าสตริง
ในการแก้ปัญหานี้ เราต้องเข้าใจว่าหน้าจอเจ็ดส่วนคืออะไรและใช้งานได้อย่างไร
การแสดงเจ็ดส่วนคืออะไร
การแสดงเจ็ดเซกเมนต์เป็นอุปกรณ์แสดงผลเอาต์พุตที่ให้วิธีการแสดงข้อมูลในรูปของรูปภาพหรือข้อความหรือตัวเลขทศนิยมซึ่งเป็นทางเลือกแทนการแสดงดอทเมทริกซ์ที่ซับซ้อนมากขึ้น มีการใช้กันอย่างแพร่หลายในนาฬิกาดิจิตอล เครื่องคิดเลขพื้นฐาน เครื่องวัดอิเล็กทรอนิกส์ และอุปกรณ์อิเล็กทรอนิกส์อื่นๆ ที่แสดงข้อมูลตัวเลข ประกอบด้วยไดโอดเปล่งแสง (LED) เจ็ดส่วนซึ่งประกอบเป็นตัวเลข 8
การทำงานของจอแสดงผลทั้งเจ็ดส่วน
หมายเลข 8 จะปรากฏขึ้นเมื่อมีการจ่ายไฟให้กับทุกส่วน และหากคุณถอดสายไฟสำหรับ 'g' จะแสดงหมายเลข 0 ในการแสดงผลเจ็ดส่วน กำลังไฟ (หรือแรงดันไฟฟ้า) ที่พินต่างๆ สามารถใช้ได้ที่ ในเวลาเดียวกัน ดังนั้นเราจึงสามารถสร้างชุดค่าผสมของการแสดงผลตัวเลขตั้งแต่ 0 ถึง 9 เนื่องจากการแสดงผลเจ็ดส่วนไม่สามารถสร้างตัวอักษรเช่น X และ Z ได้ ดังนั้นจึงไม่สามารถใช้สำหรับตัวอักษรและสามารถใช้ได้เฉพาะสำหรับการแสดงขนาดตัวเลขทศนิยม อย่างไรก็ตาม การแสดงเจ็ดส่วนสามารถสร้างตัวอักษร A, B, C, D, E และ F ดังนั้นจึงสามารถใช้แทนตัวเลขฐานสิบหกได้
ตัวอย่าง
Input − num = “123 ” Output − count is 5
คำอธิบาย − LED ทั้งหมดที่จำเป็นในการส่องสว่าง 1 คือ 2 LED ทั้งหมดที่จำเป็นในการส่องสว่าง 2 คือ 5 และ LED ทั้งหมดที่จำเป็นในการส่องสว่าง 3 คือ 5 ดังนั้นจำนวนการเปลี่ยนแปลงทั้งหมดที่จำเป็นในการแสดงผลคือ − 5
Input − num = “576 ” Output − count is 10
คำอธิบาย − LED ทั้งหมดที่จำเป็นในการส่องสว่าง 5 คือ 5 LED ทั้งหมดที่จำเป็นในการส่องสว่าง 7 คือ 3 และ LED ทั้งหมดที่จำเป็นในการส่องสว่าง 6 คือ 6 ดังนั้นจำนวนการเปลี่ยนแปลงที่จำเป็นในการแสดงผลทั้งหมดคือ :10
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
-
ป้อนสตริงของค่าจำนวนเต็มที่กำหนดตัวเลขที่จะสว่างขึ้น
-
คำนวณความยาวของสตริงที่กำหนดโดยใช้ฟังก์ชัน length() ซึ่งจะคืนค่าจำนวนเต็มตามตัวเลขในสตริง
-
สร้างอาร์เรย์ที่จะเก็บค่า LED ทั้งหมดไว้
-
ใช้ตัวแปรชั่วคราว สมมุติว่า temp ที่จะเก็บค่า
-
เริ่มวนรอบสำหรับ i ถึง 1 และฉันน้อยกว่าความยาว
-
ภายในลูป ตั้งค่า temp ด้วย temp + abs([LED[str[i] - '0'] - LED[n[i-1] - '0']);
-
คืนจำนวน
-
พิมพ์ผลลัพธ์
ตัวอย่าง
#include<iostream> using namespace std; int countled(string str){ // number of LED required to display a digit int Led[] = { 6, 2, 5, 5, 4, 5, 6, 3, 7, 5 }; int len = str.length(); // calculating the change int res = Led[str[0] - '0']; for (int i = 1; i < len; i++){ res = res + abs(Led[str[i] - '0'] - Led[str[i - 1] - '0']); } return res; } int main(){ string str = "123"; cout <<"count is "<<countled(str); return 0; }
ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น เราจะได้ผลลัพธ์ดังต่อไปนี้ -
count is 5