Từ 1 tới 5 trên tổng số 5 kết quả

Đề tài: Nhập ngày tháng năm xuất ra thứ tương ứng

  1. #1
    Ngày gia nhập
    10 2012
    Bài viết
    2

    Mặc định Nhập ngày tháng năm xuất ra thứ tương ứng

    pro nào biết xin chỉ e cái thuật toán.(nhiều thuật toán càng tốt)...+giải thích

    e mới nhập môn nên muốn hiểu cặn kẻ từng vấn đề a nào giúp e với!!!

  2. #2
    Ngày gia nhập
    02 2012
    Nơi ở
    everywhere
    Bài viết
    13

    Trích dẫn Nguyên bản được gửi bởi khuyen94 Xem bài viết
    pro nào biết xin chỉ e cái thuật toán.(nhiều thuật toán càng tốt)...+giải thích

    e mới nhập môn nên muốn hiểu cặn kẻ từng vấn đề a nào giúp e với!!!
    này phỏng ?
    Từ ngày 09/09/2009 đến ngày 09/09/2049 là đúng 40 năm, trong đó có 10 năm nhuận vào các năm chia hết cho 4 (2012, 2016, 2020, ..., 2040), có tổng cộng là
    ( 365 ngày × 40) + 10 ngày = 14610 ngày = 14610 / 7 tuần hay
    2087 tuần và 1 ngày.
    Vậy nếu ngày 09/09/2009 là Thứ Tư thì ngày 09/09/2049 là Thứ Năm

  3. #3
    Ngày gia nhập
    09 2012
    Bài viết
    6

    Code:
    #include <stdio.h>
    #include <conio.h>
    void nhap(int &ngay,int &thang,int &nam)
    {
    	printf("Nhap lan luot ngay ,thang va nam\n");
    	scanf("%d%d%d",&ngay,&thang,&nam);
    }
    int nhuan(int nam)
    {
    	int hc;
    	if(nam%400==0||(nam%4==0&&nam%100!=0))
    		hc=1;
    	else
    		hc=0;
    	return hc;
    }
    int hople(int ngay,int thang,int nam)
    {
    	int hc,ch,sntt;
    	hc=nhuan(nam);
    	switch(thang)
    	{
    	case 1:case 3:case 5:case 7:case 8:case 10:case 12:sntt=31;break;
    	case 4:case 6:case 9:case 11:sntt=30;break;
    	case 2:sntt=(hc?29:28);break;
    	}
    	if(ngay<0||ngay>sntt||thang<0||thang>12||nam<0)
    		ch=0;
    	else
    		ch=1;
    	return ch;
    }
    int thu(int ngay,int thang,int nam)
    {
    	int t,t2,ret=ngay,s;
    	for(int i=1;i<thang;i++)
    	{
    		if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
    			ret=ret+31;
    		else
    		{
    			if(i==2)
    			{
    				t2=(nhuan(nam)?29:28);
    				ret=ret+t2;
    			}
    			else
    				ret=ret+30;
    		}
    	}
    	s=nam-1+((nam-1)/4)-((nam-1)/100)+((nam-1)/400)+ret;
    	t=s%7;
    	return t;
    }
    void main()
    {
    	int hc,t;
    	int ngay,thang,nam;
    	nhap(ngay,thang,nam);
    	hc=hople(ngay,thang,nam);
    	if(hc)
    	{
    		t=thu(ngay,thang,nam);
    		switch(t)
    		{
    		case 0:printf("Chu nhat\n");break;
    		case 1:printf("Thu hai\n");break;
    		case 2:printf("Thu ba\n");break;
    		case 3:printf("Thu tu\n");break;
    		case 4:printf("Thu nam\n");break;
    		case 5:printf("Thu sau\n");break;
    		case 6:printf("Thu bay\n");break;
    		}
    	}
    	else
    		printf("ngay khong hop le\n");
    	getch();
    }
    Gửi bạn thân

  4. #4
    Ngày gia nhập
    10 2012
    Bài viết
    2

    Trích dẫn Nguyên bản được gửi bởi yokashi Xem bài viết
    này phỏng ?
    Từ ngày 09/09/2009 đến ngày 09/09/2049 là đúng 40 năm, trong đó có 10 năm nhuận vào các năm chia hết cho 4 (2012, 2016, 2020, ..., 2040), có tổng cộng là
    ( 365 ngày × 40) + 10 ngày = 14610 ngày = 14610 / 7 tuần hay
    2087 tuần và 1 ngày.
    Vậy nếu ngày 09/09/2009 là Thứ Tư thì ngày 09/09/2049 là Thứ Năm
    cái này thì mình đã đọc rồi nhưng không biết làm sao dùng nó để viết code đc...mong chỉ dẫn..
    Thân!

  5. #5
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,007

    Trích dẫn Nguyên bản được gửi bởi khuyen94 Xem bài viết
    cái này thì mình đã đọc rồi nhưng không biết làm sao dùng nó để viết code đc...mong chỉ dẫn..
    Thân!
    góp chân tí nhỉ



    C Code:
    1. #include  <stdio.h>
    2. #include  <conio.h>
    3. char* Thu(int ngay, int thang, int nam)  
    4. {
    5.     char *xau="Chu nhat\0Thu hai \0Thu ba  \0Thu tu  \0Thu nam \0Thu sau \0Thu bay",i=thang<3;
    6.     return xau+( ngay + (13*(thang+i*12)+3)/5 + (nam-i)*5/4) % 7 *9;
    7. }
    8. int main()  
    9. {
    10.     int ngay, thang, nam;
    11.     printf("Nhap vao ngay: ");  scanf("%d", &ngay);
    12.     printf("Nhap vao thang: ");  scanf("%d", &thang);
    13.     printf("Nhap vao nam: ");  scanf("%d", &nam);
    14.     printf("%s",Thu(ngay,thang,nam));
    15.     getch();
    16.     return 0;
    17. }

    tham khảo http://diendan.congdongcviet.com/showthread.php?t=35820

    Gợi ý nhỏ : lần sau post bài bên Thắc mắc lập trình C/C++/C++0x nhé
    langman luôn ưu tiên giải quyết bên đó nhiều hơn
    nhưng cũng chú ý, ở bên đó yêu cầu khá ngặt nghè về nội quy tiêu đề đấy,
    chúc thành công
    ^_,^

    Tổng hợp các câu chuyện hài hước vui nhộn, sử dụng Speech Synthesis để đọc : https://www.youtube.com/channel/UCLk...Tjrg/playlists


    Bùi Tấn Quang

Các đề tài tương tự

  1. Kỹ thuật C Bài toán nhập số năm xuất tên năm âm lịch, cách làm thế nào?
    Gửi bởi hikaru2838 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 09-12-2012, 09:51 PM
  2. Bài tập C++ Lỗi ở hàm xuất 5 năm gần nhất trong danh sách liên kết
    Gửi bởi truonglong99 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 0
    Bài viết cuối: 10-11-2011, 03:11 PM
  3. Bài tập C++ nhập nhiều lần ngày tháng năm và xuất ra file.txt
    Gửi bởi full_rains trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 03-10-2011, 11:01 AM
  4. Nhập vào năm, tháng, thứ đầu tiên của năm, xuất ra lịch tháng đó
    Gửi bởi kenshin47 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 21-10-2010, 09:32 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn