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

โปรแกรม C หาปริมาตรกล่องที่ผ่านอุโมงค์ได้


คำอธิบายปัญหา

สมมติว่ามีอุโมงค์สูง 41 หน่วย และกว้างมาก กล่องจะผ่านได้ถ้าความสูงของกล่องน้อยกว่า 41 อย่างเคร่งครัด เราต้องหาปริมาตรรวมของกล่องที่ผ่านได้ ปริมาตร = ยาว × กว้าง × สูง มีจำนวนกล่อง N และอาร์เรย์ 2 มิติ N แถว 3 คอลัมน์

ตัวอย่าง

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

ขั้นตอนการแก้ปัญหา

  1. กำหนดโครงสร้าง Box มี length, width, height
  2. ฟังก์ชัน volume() คืนค่า length × width × height
  3. ฟังก์ชัน lower() คืนค่า true ถ้า height < 41
  4. วนลูปตรวจสอบทุกกล่อง ถ้า lower() เป็น true ให้พิมพ์ volume()

โค้ดตัวอย่าง

#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);
    return 0;
}

อินพุต

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

เอาต์พุต

900
315