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

โปรแกรม C ตรวจสอบความถูกต้องของวันที่

โปรแกรมนี้ใช้ตรวจสอบว่าวันที่ที่กำหนด (วัน เดือน ปี) เป็นวันที่ที่ถูกต้องตามปฏิทินหรือไม่ โดยพิจารณาข้อจำกัดดังนี้:

  • วันที่ต้องอยู่ระหว่าง 1 ถึง 31
  • เดือนต้องอยู่ระหว่าง 1 ถึง 12
  • ปีต้องอยู่ระหว่าง 1800 ถึง 9999
  • เดือนที่มี 30 วัน (เมษายน, มิถุนายน, กันยายน, พฤศจิกายน) วันที่ต้องไม่เกิน 30
  • เดือนกุมภาพันธ์ ตรวจสอบปีอธิกสุรทิน: ถ้าเป็นปีอธิกสุรทิน วันที่ต้องไม่เกิน 29 มิฉะนั้นไม่เกิน 28

ตัวอย่าง

Input: y = 2002, d = 29, m = 11 → Output: Date is valid
Input: y = 2001, d = 29, m = 2 → Output: Date is not valid

อัลกอริทึม

  1. ฟังก์ชัน isleap(int y) ตรวจสอบปีอธิกสุรทิน: หาร 4 ลงตัว และ (ไม่หาร 100 ลงตัว หรือ หาร 400 ลงตัว)
  2. ฟังก์ชัน datevalid(int d, int m, int y) ตรวจสอบเงื่อนไขทั้งหมดตามลำดับ
  3. ใน main() เรียกใช้ฟังก์ชันและแสดงผล

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

#include <stdio.h>
#define max_yr 9999
#define min_yr 1800

int isleap(int y) {
    if ((y % 4 == 0) && (y % 100 != 0) && (y % 400 == 0))
        return 1;
    else
        return 0;
}

int datevalid(int d, int m, int y) {
    if (y < min_yr || y > max_yr) return 0;
    if (m < 1 || m > 12) return 0;
    if (d < 1 || d > 31) return 0;

    if (m == 2) {
        if (isleap(y)) {
            if (d <= 29) return 1;
            else return 0;
        }
    }
    if (m == 4 || m == 6 || m == 9 || m == 11) {
        if (d <= 30) return 1;
        else return 0;
    }
    return 1;
}

int main() {
    int y = 2002, d = 29, m = 11;
    if (datevalid(d, m, y))
        printf("Date is valid\n");
    else
        printf("Date is not valid\n");
    return 0;
}

ผลลัพธ์

Date is valid