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

นับจำนวนการเปลี่ยนแปลง LED ในการแสดงตัวเลขทีละหลักใน C++

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

เพื่อแก้คำถามนี้ เราต้องเข้าใจว่า seven segment display คืออะไรและการทำงานอย่างไร

Seven Segment Displays คืออะไร

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

นับจำนวนการเปลี่ยนแปลง LED ในการแสดงตัวเลขทีละหลักใน C++

การทำงานของ Seven Segment Displays

ตัวเลข 8 แสดงเมื่อให้ไฟฟ้าแก่ทุกเซ็กเมนต์ และถ้าตัดไฟของ 'g' จะแสดงตัวเลข 0 ใน seven segment display สามารถให้ไฟฟ้า (หรือแรงดัน) ที่ขาที่ต่างกันพร้อมกันได้ จึงสามารถสร้างการรวมกันของตัวเลข 0 ถึง 9 เนื่องจาก seven segment displays ไม่สามารถสร้างตัวอักษรเช่น X และ Z ได้ จึงไม่สามารถใช้สำหรับตัวอักษร แต่สามารถใช้แสดงขนาดตัวเลขฐานสิบได้ อย่างไรก็ตาม สามารถสร้างตัวอักษร A, B, C, D, E, F ได้ จึงใช้แทนเลขฐานสิบหกได้ด้วย

นับจำนวนการเปลี่ยนแปลง LED ในการแสดงตัวเลขทีละหลักใน C++

ตัวอย่าง

อินพุต – num = "123" เอาต์พุต – count is 5

คำอธิบาย – LED ทั้งหมดที่ต้องเปิดสำหรับ 1 คือ 2, สำหรับ 2 คือ 5 และสำหรับ 3 คือ 5 ดังนั้นจำนวนการเปลี่ยนแปลงทั้งหมดในการแสดงคือ 5

อินพุต – num = "576" เอาต์พุต – count is 10

คำอธิบาย – LED สำหรับ 5 คือ 5, สำหรับ 7 คือ 3 และสำหรับ 6 คือ 6 จำนวนการเปลี่ยนแปลงทั้งหมดคือ 10

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

  • รับสตริงของค่าจำนวนเต็มที่กำหนดตัวเลขที่จะเปิด
  • คำนวณความยาวของสตริงด้วย length()
  • สร้างอาร์เรย์เก็บค่า LED ทั้งหมด
  • ใช้ตัวแปรชั่วคราว temp เก็บค่า
  • เริ่มลูป for i จาก 1 ถึง i น้อยกว่าความยาว
  • ในลูป ตั้งค่า temp ด้วย temp + abs([LED[str[i] - '0'] - LED[str[i-1] - '0'])
  • คืนค่า count
  • พิมพ์ผลลัพธ์

ตัวอย่าง

#include <iostream>
using namespace std;

int countled(string str){
    int Led[] = { 6, 2, 5, 5, 4, 5, 6, 3, 7, 5 };
    int len = str.length();
    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