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

โปรแกรม C หาปริมาณที่ส่งผ่านอุโมงค์


สมมุติว่ามีอุโมงค์สูง 41 กว้างใหญ่มาก เรายังมีรายการกล่องที่มีความยาว ความกว้าง และความสูงอีกด้วย กล่องสามารถผ่านอุโมงค์ได้หากความสูงน้อยกว่าความสูงของอุโมงค์ เราจะต้องหาปริมาตรที่ไหลผ่านอุโมงค์ ปริมาณ ยาว * กว้าง * สูง. ดังนั้นเราจึงมีตัวเลข N ซึ่งเป็นอาร์เรย์ 2 มิติที่มี N แถวและสามคอลัมน์

ดังนั้น ถ้าอินพุตเป็น N =4 กล่อง =[[9,5,20],[3,7,15],[8,15,41],[6,3,42]] ผลลัพธ์ก็จะออกมา เป็น 900 และ 315 เราผ่านสองกล่องแรกได้ ปริมาตรคือ 9 * 5 * 20 =900 และ 3 * 7 * 15 =315 ไม่รองรับความสูงของกล่องอื่นๆ

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • กำหนดประเภทข้อมูลของ Box ด้วยความยาว ความกว้าง และความสูง

  • กำหนดปริมาณฟังก์ชัน () ซึ่งจะเป็นกล่อง

  • ส่งคืน box.length * box.width * box.height

  • กำหนดฟังก์ชันที่ต่ำกว่า () ซึ่งจะเป็นกล่อง

  • คืนค่า จริง หาก box.height <41 มิฉะนั้น เท็จ

  • จากวิธีหลัก ให้ทำดังนี้:,

  • สำหรับการเริ่มต้น i :=0 เมื่อ i

    • ถ้า lower(boxes[i]) เป็นจริง ดังนั้น:

      • แสดงระดับเสียง(กล่อง[i])

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

#include <stdio.h>
#define N 4
struct Box{
    int length, width, height;
};
int volume(struct Box box){
    return box.length*box.width*box.height;
}
int lower(struct Box box){
    return box.height < 41;
}
int solve(struct Box boxes[]){
    for (int i = 0; i < N; i++)
        if (lower(boxes[i]))
            printf("%d\n", volume(boxes[i]));
}
int main(){
    struct Box boxes[N] = {{9,5,20},{3,7,15},{8,15,41},{6,3,42}};
   
    solve(boxes);
}

อินพุต

4, {{9,5,20},{3,7,15},{8,15,41},{6,3,42}}

ผลลัพธ์

900
315