Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Chương trình C++ tính số ngày lẻ trong số năm cho trước

Cho giá trị nguyên dương n, nhiệm vụ là tạo ra số ngày lẻ cho đến năm n.

Ví dụ

Đầu vào: days = 500
Đầu ra: số ngày lẻ là: 5

Đầu vào: days = 400
Đầu ra: số ngày lẻ là: 0

Cách tính số ngày lẻ trong số năm cho trước

Để tính số ngày lẻ, điều đầu tiên cần kiểm tra là năm đã cho có phải năm nhuận hay không vì nếu là năm nhuận thì số ngày lẻ sẽ thay đổi. Nếu năm chia hết cho 100 hoặc 400 nhưng không chia hết cho 4 thì năm đó sẽ là năm nhuận, ngược lại là năm thường. Năm thường có 1 ngày lẻ, năm nhuận có 2 ngày lẻ.

Phương pháp sử dụng trong chương trình:

  • Nhập số ngày làm đầu vào
  • Kiểm tra năm là năm nhuận hay năm thường
  • Tính ngày lẻ bằng cách lấy modulus của tổng số ngày với 7
  • Hiển thị kết quả cuối cùng là số ngày lẻ từ năm 1 đến n

THUẬT TOÁN

BẮT ĐẦU
Bước 1 → Khai báo hàm tính số ngày lẻ trong năm cho trước
    int cal_odd(int days)
    Khai báo int cal_1 = days / 100
    Khai báo int cal_2 = days / 400
    Khai báo int check_leap = days >> 2
    Khai báo int temp = days - check_leap
    NẾU (cal_1)
        Gán temp += cal_1
        Gán check_leap -= cal_1
    KẾT THÚC
    NẾU (cal_2)
        Gán temp -= cal_2
        Gán check_leap += cal_2
    KẾT THÚC
    Khai báo int final_days = temp + check_leap * 2
    Khai báo int odd = final_days % 7
    TRẢ VỀ odd
Bước 2 → Trong main()
    Khai báo int days = 500
    Gọi cal_odd(days)
DỪNG

Ví dụ mã nguồn

#include <iostream>
using namespace std;

// Tính số ngày lẻ trong năm cho trước
int cal_odd(int days) {
    int cal_1 = days / 100;
    int cal_2 = days / 400;
    int check_leap = days >> 2;
    int temp = days - check_leap;
    if (cal_1) {
        temp += cal_1;
        check_leap -= cal_1;
    }
    if (cal_2) {
        temp -= cal_2;
        check_leap += cal_2;
    }
    int final_days = temp + check_leap * 2;
    int odd = final_days % 7;
    return odd;
}

int main() {
    int days = 500;
    cout << "number of odd days are: " << cal_odd(days);
    return 0;
}

Kết quả đầu ra

number of odd days are: 5