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

นับการเปลี่ยนแปลงในไฟ LED เพื่อแสดงตัวเลขทีละตัวใน C++


เราได้รับจำนวนบวก สมมติว่า num และงานคือการคำนวณจำนวนการเปลี่ยนแปลงในไฟ LED ที่แสดงทีละรายการ เราจะถือว่าในตอนแรก LED ทั้งหมดดับและจะเริ่มตามค่าสตริง

ในการแก้ปัญหานี้ เราต้องเข้าใจว่าหน้าจอเจ็ดส่วนคืออะไรและใช้งานได้อย่างไร

การแสดงเจ็ดส่วนคืออะไร

การแสดงเจ็ดเซกเมนต์เป็นอุปกรณ์แสดงผลเอาต์พุตที่ให้วิธีการแสดงข้อมูลในรูปของรูปภาพหรือข้อความหรือตัวเลขทศนิยมซึ่งเป็นทางเลือกแทนการแสดงดอทเมทริกซ์ที่ซับซ้อนมากขึ้น มีการใช้กันอย่างแพร่หลายในนาฬิกาดิจิตอล เครื่องคิดเลขพื้นฐาน เครื่องวัดอิเล็กทรอนิกส์ และอุปกรณ์อิเล็กทรอนิกส์อื่นๆ ที่แสดงข้อมูลตัวเลข ประกอบด้วยไดโอดเปล่งแสง (LED) เจ็ดส่วนซึ่งประกอบเป็นตัวเลข 8

นับการเปลี่ยนแปลงในไฟ LED เพื่อแสดงตัวเลขทีละตัวใน C++

การทำงานของจอแสดงผลทั้งเจ็ดส่วน

หมายเลข 8 จะปรากฏขึ้นเมื่อมีการจ่ายไฟให้กับทุกส่วน และหากคุณถอดสายไฟสำหรับ 'g' จะแสดงหมายเลข 0 ในการแสดงผลเจ็ดส่วน กำลังไฟ (หรือแรงดันไฟฟ้า) ที่พินต่างๆ สามารถใช้ได้ที่ ในเวลาเดียวกัน ดังนั้นเราจึงสามารถสร้างชุดค่าผสมของการแสดงผลตัวเลขตั้งแต่ 0 ถึง 9 เนื่องจากการแสดงผลเจ็ดส่วนไม่สามารถสร้างตัวอักษรเช่น X และ Z ได้ ดังนั้นจึงไม่สามารถใช้สำหรับตัวอักษรและสามารถใช้ได้เฉพาะสำหรับการแสดงขนาดตัวเลขทศนิยม อย่างไรก็ตาม การแสดงเจ็ดส่วนสามารถสร้างตัวอักษร A, B, C, D, E และ F ดังนั้นจึงสามารถใช้แทนตัวเลขฐานสิบหกได้

นับการเปลี่ยนแปลงในไฟ LED เพื่อแสดงตัวเลขทีละตัวใน C++

ตัวอย่าง

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