Tháng Sáu 27, 2020
if-Ngày hợp lệ
Đề bài: VCT nhập vào ngày tháng năm và kiểm tra xem ngày tháng năm nhập vào có hợp lệ hay không?
Ví dụ nhập ngày 29 tháng 2 năm 2017 –> không hợp lệ
ngày 31 tháng 4 năm 2016 –> không hợp lệ
ngày 30 tháng 3 năm 2020 –> hợp lệ.
Đầu vào: 3 số nguyên lần lượt là ngày tháng năm cách nhau một khoảng trắng
Đầu ra: thông báo HOP LE hoặc KHONG HOP LE
Ví dụ 1:
input: 29 2 2017
output: KHONG HOP LE
Ví dụ 2:
input: 30 3 2020
output: HOP LE
- Hướng dẫn: Ta khai báo biến kt (kiểm tra) có kiểu Boolean; (kiểu boolean là kiểu logic nó có 2 giá trị là True (đúng) hoặc False (sai))
var kt:boolean; - Đầu tiên ta giả sử cho ngày tháng năm nhập vào là hợp lệ ta gán giá trị cho biến kiểm tra là đúng.
kt:=true; - Sau đó ta xét các trường hợp ngày tháng năm nếu nó ko hợp lệ thì gán biến kt lại thành sai. Như thế nào là ko hợp lệ, sau đây là các trường hợp không hợp lệ:
-Nếu ngày nhỏ hơn 1 hoặc lớn hơn 31 hoặc tháng nhỏ hơn 1, hoặc lớn hơn 12
-Nếu ngày là 31 mà các tháng là 2,4,6,9,11
-Nếu ngày là 30 mà tháng 2
-Nếu ngày là 29 mà tháng 2 và năm không nhuận - Cuối cùng, ta xét lại biến kiểm tra nếu nó vẫn là đúng thì ngày tháng năm nhập vào là hợp lệ ngược lại là không hợp lệ.
Bạn chưa đăng nhập? Đăng nhập để Submit ngay!
5 Comments
Add a Comment
Bạn phải đăng nhập để gửi phản hồi.
Hướng dẫn: Ta khai báo biến kt (kiểm tra) có kiểu Boolean; (kiểu boolean là kiểu logic nó có 2 giá trị là True (đúng) hoặc False (sai))
var kt:boolean;
Đầu tiên ta giả sử cho ngày tháng năm nhập vào là hợp lệ ta gán giá trị cho biến kiểm tra là đúng.
kt:=true;
Sau đó ta xét các trường hợp ngày tháng năm nếu nó ko hợp lệ thì gán biến kt lại thành sai. Như thế nào là ko hợp lệ, sau đây là các trường hợp không hợp lệ:
-Nếu ngày nhỏ hơn 1 hoặc lớn hơn 31 hoặc tháng nhỏ hơn 1, hoặc lớn hơn 12
-Nếu ngày là 31 mà các tháng là 2,4,6,9,11
-Nếu ngày là 30 mà tháng 2
-Nếu ngày là 29 mà tháng 2 và năm không nhuận
Cuối cùng, ta xét lại biến kiểm tra nếu nó vẫn là đúng thì ngày tháng năm nhập vào là hợp lệ ngược lại là không hợp lệ.
add nhờ add xem code của em sai ở đâu vậy ạ em dùng pascal:
var kt:boolean;
day,month,year:integer;
begin
readln(day,month,year);
if (day31) or (month12) then kt:=false ;
if day=31 then if month in [4,6,9,11] then kt:=false;
if day=30 then if month=2 then kt:=false ;
if day=29 then if ((year mod 4)0) and (month=2) then kt:=false;
if kt=false then write(‘KHONG HOP LE’) ELSE WRITE(‘HOP LE’);
readln;
end.
sao nó không hiện vậy add
‘””‘
#include
#define FAST ios_base::sync_with_stdio(false); cin.tie(0);
using namespace std;
int check(int d, int m, int y) {
if(d 31)
return 0;
if(m 12)
return 0;
else {
switch(m) {
case 4: case 6: case 9: case 11:
if(d == 31)
return 0;
case 2:
if(d == 29 && !((y % 4 == 0 && y % 100 != 0) || y % 400 == 0))
return 0;
}
}
return 1;
}
int main() {
FAST
int d, m, y;
cin >> d >> m >> y;
if(check(d, m, y))
cout << "HOP LE";
else
cout << "KHONG HOP LE";
return 0;
}
Không biết em tư duy như thế này đúng không?