30/09/2018, 16:36

Tham Khảo code chương trình nhập vào ngày tháng năm

Viết = Hàm (function)
Viết chương trình nhập vào ngày tháng năm (kiểm tra tính hợp lệ) và In ra ngày hôm trước và hôm sau…ai cao tay cho e hỏi thêm có ai code bài giống như vậy ko cho e tham khảo code với…thanks all

#include<conio.h>
#include<stdio.h>
#include<iostream.h>

int KiemTraNam(int yy);//Ki?m tra nam nhu?n hay ko
int KiemTraNgay(int dd,int mm,int yy);//Ki?m tra ngày có có trong tháng hay không
void SoNgayTrongThang(int yy,int mm,int a);//S? ngày trong t?ng tháng tính theo nam nhu?n hay ko nhu?n
void NgayHomSau(int dd, int mm, int yy);//Ngày tháng hôm sau
void NgayHomTruoc(int dd, int mm, int yy);
int main(){
    int dd,mm,yy;
    cout<<"Nhap ngay thang nam cach nhau boi dau cach: ";cin>>dd>>mm>>yy;
    if(mm>0 && mm<=12 && yy>1){
        if(KiemTraNgay(dd,mm,yy)==1){
            cout<<"Dinh dang ngay dung 
";
            NgayHomSau(dd,mm,yy);
            NgayHomTruoc(dd,mm,yy);
        }
        else cout<<"Dinh dang ngay sai";
    }
    else cout<<"so nam hoac so thang ko dung";
    //Ki?m tra thang nam nh?p vào
    getch();
}
int KiemTraNam(int yy,int mm){
    bool check;
    if(yy%400==0 || (yy%4==0 && yy%100!=0)){
        check=0;//Nam nhu?n
    }
    else check=1;//Nam thu?ng
    return check;
}//Ki?m tra nam nhu?n hay ko nhu?n
void SoNgayTrongThang(int yy,int mm,int a[13]){
    int i;
    for(i=1;i<=12;i++){
        if(i<=7)
            if(i%2!=0) a[i]=31;//tháng 1,3,5,7 có 3` ngày
            else a[i]=30;//tháng 2,4,6 có 30 ngày
        if(i>=8)
            if(i%2==0) a[i]=31;//tháng 8,10,12 có 30 ngày
            else a[i]=30;//tháng 9,11 có 30 ngày
        if(i==2)
            if(KiemTraNam(yy,mm)==0) a[i]=29;//Nam nhu?n tháng 2 có 29 ngày
            else a[i]=28;//Nam không nhu?n tháng 2 có 28 ngày
    }
}//Xét 1 tháng có bao nhiêu ngày
int KiemTraNgay(int dd,int mm,int yy){
    bool check;
    int a[13];//Ð?t bi?n luu ngày trong tháng
    SoNgayTrongThang(yy,mm,a);
    if(dd<=a[mm] && dd>0)
        check=1;//Ðúng
    else check=0;//Sai
    return check;
}//Ki?m tra ngày
void NgayHomSau(int dd,int mm,int yy){
    int a[13];//Ð?t bi?n luu ngày trong tháng
    SoNgayTrongThang(yy,mm,a);
    if(dd<a[mm]) dd=dd+1;//Tang ngày
    if(dd==a[mm]){
        dd=1;        
        if(mm==12){
            dd=1;
            mm=1;
            yy=yy+1;
        }else mm=mm+1;//Tang nam
    }//Tang ngày tháng    
    cout<<"Ngay hom sau la "<<dd<<"/"<<mm<<"/"<<yy;
}//Ngay hom sau  
void NgayHomTruoc(int dd,int mm,int yy){
    int a[13];//Ð?t bi?n luu ngày trong tháng
    SoNgayTrongThang(yy,mm,a);
    if(dd<a[mm]) dd=dd-1;//Giam ngày
    if(dd==a[mm]){
        dd=1;        
        if(mm==12){
            dd=1;
            mm=1;
            yy=yy-1;
        }else mm=mm-1;//Giam nam
    }//Giam ngày tháng    
    cout<<"
Ngay hom truoc la "<<dd<<"/"<<mm<<"/"<<yy;
}//Ngay hom truoc
*grab popcorn* viết 18:48 ngày 30/09/2018

code của mình ^^

Ideone.com

Ideone.com

Ideone is something more than a pastebin; it's an online compiler and debugging tool which allows to compile and run code online in more than 40 programming languages.

Mới xem lại code thấy khá dài + dư nên đã tối ưu lại và chỉ giúp code ngắn chứ kha kha giống codee bạn ^^

Bao Tran viết 18:48 ngày 30/09/2018

rất hay và bổ ích thanks bạn nhìu mình đang tham khảo code

Cậu Bé Pán Hành viết 18:41 ngày 30/09/2018

{ PASCAL CHO AI CAN }
var ng,t,n,day:longint;
begin
writeln(‘nhap ngay thang nam:’);
readln(ng,t,n);
if (t=1)or(t=3)or(t=5)or(t=7)or(t=8)or(t=10)or(t=12) then day:=31;
if (t=4)or(t=6)or(t=9)or(t=11) then day:=30;
if t=2 then
if (n mod 4=0) and (n mod 100<>0) then day:=29
else day:=28;
IF (ng>day) or (t>12) or (t<1) or (ng<1) or (n<1)
THEN write(‘ngay thang nam ko hop le !’)
else
begin
inc(ng);
if ng>day then begin inc(t); ng:=1; end;
if t>12 then begin inc(n); t:=1; end;
write(‘ngay thang nam hom sau la: ‘,ng,’-’,t,’-’,n);
end;
readln
end.

Bài liên quan
0