Đánh giá, nhận xét, review các công ty tuyển dụng
Từ 1 tới 9 trên tổng số 9 kết quả

Đề tài: Nhập ngày, tháng, năm. Kiểm tra ngày hôm sau là ngày nào

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

    Angry Nhập ngày, tháng, năm. Kiểm tra ngày hôm sau là ngày nào

    Mình có bài tập thế này:
    "Cài đặt cấu trúc ngày/tháng/năm(struct):
    DATE{
    ngay
    thang
    nam
    }
    1)Cho biết có phải năm nhuận hay không?
    2)Cho biết năm đó có bao nhiêu ngày
    3)Kiểm tra ngày hôm sau là ngày nào"
    MÌnh đã làm được 2 câu đầu còn câu cuối thì pó tay. Các bạn hướng dẫn mình với.Tks ^^

  2. #2
    Ngày gia nhập
    07 2010
    Nơi ở
    chỗ kín
    Bài viết
    446

    Ví dụ hôm nay là 16-6-2011, ngày mai là ngày bao nhiêu.

    Bạn dùng hàm system() gọi mấy hàm thời gian trong dos, lưu lại thời gian hiện tại , sau đó chuyển time, date thành 23:59:59 16-6-2010 , cho chuơng trình đợi 2 giây rồi get date, cuối cùng thì chuyển tg về như cũ.

    Done.

  3. #3
    Ngày gia nhập
    12 2010
    Nơi ở
    Hanoi, Vietnam, Vietnam
    Bài viết
    688

    Trích dẫn Nguyên bản được gửi bởi virut35 Xem bài viết
    Mình có bài tập thế này:
    "Cài đặt cấu trúc ngày/tháng/năm(struct):
    DATE{
    ngay
    thang
    nam
    }
    1)Cho biết có phải năm nhuận hay không?
    2)Cho biết năm đó có bao nhiêu ngày
    3)Kiểm tra ngày hôm sau là ngày nào"
    MÌnh đã làm được 2 câu đầu còn câu cuối thì pó tay. Các bạn hướng dẫn mình với.Tks ^^
    bài này của 1 bạn hôm trước post lên , ! hôm nay tìm trên diễn đàn mà chả thấy , may ra hôm đó mình copy về nên còn , bạn xem có đúng ko ? mình vẫn chưa kiểm tra kĩ !

    C Code:
    1. #include<stdio.h>
    2. #include<iostream>
    3. using namespace std;
    4. struct ngaythang
    5. {
    6.     int ng;
    7.     int th;
    8.     int nm;
    9. };
    10. void nhap(ngaythang &ngay);
    11. int ktranhuan(ngaythang ngay);
    12. void sothutungaytrongnam(ngaythang ngay);
    13. void ngaytruoc(ngaythang ngay);
    14. void ngaysau(ngaythang ngay);
    15. int main()
    16. {
    17.     struct ngaythang ngay;
    18.     nhap(ngay);
    19.     if(ktranhuan(ngay)==1)
    20.         printf("nhuan");
    21.     else
    22.         printf("khongnhuan");
    23.     printf("\n");
    24.     sothutungaytrongnam(ngay);
    25.     printf("\n");
    26.     ngaytruoc(ngay);
    27.     printf("\n");
    28.     ngaysau(ngay);
    29.     printf("\n");
    30.     system ("pause");
    31.     return 0;
    32.    
    33.     /*nhap(ngay2);
    34.     khoangcach2ngay(ngay1,ngay2);
    35.     printf("\n");
    36.     sosanh2ngay(ngay1,ngay2);*/
    37. }
    38.  
    39. void nhap(ngaythang &ngay)
    40. {
    41.     printf("nhap ngay");
    42.     scanf("%d",&(ngay.ng));
    43.     printf("nhap thang");
    44.     scanf("%d",&(ngay.th));
    45.     printf("nhap nam");
    46.     scanf("%d",&(ngay.nm));
    47. }
    48. int ktranhuan(ngaythang ngay)
    49. {
    50.     if((((ngay.nm)%100==0) && ( (ngay.nm)%400==0) )||(((ngay.nm)%100!=0) && ( (ngay.nm)%4==0) ))
    51.         return 1;
    52.     else
    53.         return 0;
    54. }
    55. void sothutungaytrongnam(ngaythang ngay)
    56. {
    57.     int n, thutu;
    58.     n=0;
    59.     switch (ngay.th)
    60.     {
    61.     case 12: n=n+30;
    62.     case 11: n=n+31;
    63.     case 10: n=n+30;
    64.     case 9: n=n+31;
    65.     case 8: n=n+31;
    66.     case 7: n=n+30;
    67.     case 6: n=n+31;
    68.     case 5: n=n+30;
    69.     case 4: n=n+31;
    70.     case 3: if(ktranhuan(ngay))
    71.                 n=n+29;
    72.             else
    73.                 n=n+28;
    74.     case 2: n=n+31;
    75.     case 1: n=n;
    76.     }
    77.     thutu=n+(ngay.ng);
    78.     printf("ngay thu %d trong nam",thutu);
    79. }
    80. void ngaytruoc(ngaythang ngay)
    81. {
    82.     if(ngay.ng==1)
    83.         switch (ngay.th)
    84.     {
    85.         case 1: printf("ngay truoc la 31/12/%d",ngay.nm-1);
    86.             break;
    87.         case 3: if(ktranhuan(ngay))
    88.                     printf("ngay truoc la 29/2/%d",ngay.nm);
    89.             break;
    90.         case 4: case 6: case 9: case 11:case 2: printf("ngay truoc la 31/%d/%d",ngay.th-1,ngay.nm);
    91.             break;
    92.         default:
    93.             printf("ngay truoc la 30/%d/%d",ngay.th-1,ngay.nm);
    94.     }
    95.     else
    96.         printf("ngay truoc la %d/%d/%d",ngay.ng-1,ngay.th,ngay.nm);
    97. }
    98. void ngaysau(ngaythang ngay)
    99. {
    100.    
    101.         switch (ngay.th)
    102.     {
    103.         case 12: if(ngay.ng==31)
    104.                      printf("ngay sau la 1/1/%d",ngay.nm+1);
    105.                 break;
    106.         case 2: if(((ktranhuan(ngay)==1)&&(ngay.ng==29))||((ktranhuan(ngay)==0)&&(ngay.ng==28)))
    107.                     printf("ngay sau la 1/3/%d",(ngay.nm));
    108.                 break;
    109.         case 4: case 6: case 9: case 11: if(ngay.ng==30)
    110.                     printf("ngay sau la 1/%d/%d",ngay.th+1,ngay.nm);
    111.                 break;
    112.         case 1: case 3: case 5: case 7: case 8: case 10:
    113.             if(ngay.ng==31)
    114.                 printf("ngay sau la 1/%d/%d",ngay.th+1,ngay.nm);
    115.                 break;
    116.         default:
    117.             printf("ngay sau la %d/%d/%d",ngay.ng+1,ngay.th,ngay.nm);
    118.     }
    119. }

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

    Trích dẫn Nguyên bản được gửi bởi xuyenit55 Xem bài viết
    bài này của 1 bạn hôm trước post lên , ! hôm nay tìm trên diễn đàn mà chả thấy , may ra hôm đó mình copy về nên còn , bạn xem có đúng ko ? mình vẫn chưa kiểm tra kĩ !

    C Code:
    1. void nhap(ngaythang &ngay);
    2. int ktranhuan(ngaythang ngay);
    3. void sothutungaytrongnam(ngaythang ngay);
    4. void ngaytruoc(ngaythang ngay);
    5. void ngaysau(ngaythang ngay);
    6. int main()
    7. {
    8.    ...
    9. }
    10. void nhap(ngaythang &ngay)
    11. {
    12.     printf("nhap ngay");
    13.     scanf("%d",&(ngay.ng));
    14.     printf("nhap thang");
    15.     scanf("%d",&(ngay.th));
    16.     printf("nhap nam");
    17.     scanf("%d",&(ngay.nm));
    18. }
    19. int ktranhuan(ngaythang ngay)
    20. {
    21.     if((((ngay.nm)%100==0) && ( (ngay.nm)%400==0) )||(((ngay.nm)%100!=0) && ( (ngay.nm)%4==0) ))
    22.         return 1;
    23.     else
    24.         return 0;
    25. }
    Bạn cho mình hỏi:"Tại sao lại chỉ khai báo void nhap(ngaythang &ngay)... rồi làm tiếp đến hàm main() rồi lại quay lại làm mấy hàm này,tại trên lớp mình học làm hàm main cuối cùng.Làm vậy có lợi gì không? cái này hình như là đệ quy phải không nhỉ " tks

  5. #5
    Ngày gia nhập
    12 2009
    Nơi ở
    bế quan tu lại
    Bài viết
    841

    không có đệ quy gì cả, ở phần trên là khai báo prototype để chương trình biết có những hàm nào trong chương trình
    còn nếu viết main ở cuối thi k cần khai báo prototype

  6. #6
    Ngày gia nhập
    12 2010
    Bài viết
    129

    Mặc định Nhập ngày, tháng, năm. Kiểm tra ngày hôm sau là ngày nào

    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. main()
    4. {
    5.       int ngay,thang,nam,top;
    6.       printf("Nhap ngay,thang,nam:"); scanf("%d%d%d",&ngay,&thang,&nam);
    7.       switch(thang)
    8.       {
    9.            case 4:case 6:case 9:case 11: top=30; break;
    10.            case 2:top=(nam%4==0 && nam%100 || nam%400==0)?29:28; break;
    11.            default : top=31;        
    12.       }
    13.       if(ngay==top)
    14.       {
    15.       ngay=1;
    16.        if(thang==12)
    17.        {
    18.         thang=1;
    19.         nam+=1;
    20.         }
    21.         else
    22.         thang=thang+1;
    23.       }
    24.       else ngay=ngay+1;
    25.       printf("Ngay mai : %d %d %d",ngay,thang,nam);
    26.       getch();
    27. }

    Bạn xem có phải là code như bạn yêu cầu ko? Mới code xong
    Hỏi một câu thì chỉ dốt trong chốc lát.
    Nhưng nếu không hỏi thì bạn sẽ dốt suốt đời.

    ƯỚC MƠ VẪN CHỈ LÀ ƯỚC MƠ NẾU CHỈ BIẾT ƯỚC MƠ MÀ KHÔNG CÓ SỰ NỖ LỰC

  7. #7
    Ngày gia nhập
    10 2010
    Bài viết
    14

    Trích dẫn Nguyên bản được gửi bởi linhcodervn Xem bài viết
    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. main()
    4. {
    5.       int ngay,thang,nam,top;
    6.       printf("Nhap ngay,thang,nam:"); scanf("%d%d%d",&ngay,&thang,&nam);
    7.       switch(thang)
    8.       {
    9.            case 4:case 6:case 9:case 11: top=30; break;
    10.            case 2:top=(nam%4==0 && nam%100 || nam%400==0)?29:28; break;
    11.            default : top=31;        
    12.       }
    13.       if(ngay==top)
    14.       {
    15.       ngay=1;
    16.        if(thang==12)
    17.        {
    18.         thang=1;
    19.         nam+=1;
    20.         }
    21.         else
    22.         thang=thang+1;
    23.       }
    24.       else ngay=ngay+1;
    25.       printf("Ngay mai : %d %d %d",ngay,thang,nam);
    26.       getch();
    27. }

    Bạn xem có phải là code như bạn yêu cầu ko? Mới code xong
    Bài của bạn sai rồi.Nếu nhập vào ngày 30/2/2000 thì chương trình vẫn chạy
    Dù sao cũng cảm ơn bạn đã chia sẻ

  8. #8
    Ngày gia nhập
    12 2010
    Bài viết
    129

    Trích dẫn Nguyên bản được gửi bởi virut35 Xem bài viết
    Bài của bạn sai rồi.Nếu nhập vào ngày 30/2/2000 thì chương trình vẫn chạy
    Dù sao cũng cảm ơn bạn đã chia sẻ
    Mình chỉ đưa ra hướng giải quyết vấn đề của bạn là như thế thôi. Nếu như sai thì nhập tháng 13 cũng là sai . Cậu hiểu ý mình nói chứ
    Hỏi một câu thì chỉ dốt trong chốc lát.
    Nhưng nếu không hỏi thì bạn sẽ dốt suốt đời.

    ƯỚC MƠ VẪN CHỈ LÀ ƯỚC MƠ NẾU CHỈ BIẾT ƯỚC MƠ MÀ KHÔNG CÓ SỰ NỖ LỰC

  9. #9
    Ngày gia nhập
    02 2011
    Bài viết
    15

    đây.bạn xem nhé. em thấy làm như bác xuyenit55 thì hơi dài dòng hì hì :d
    Code:
    #include<conio.h>
    #include<iostream>
    using namespace std;
    class date{
          private: int ng,t,n;
          public:
                 void nhap()
         {     int S,k;
    	   do
    	    { cin>>ng>>t>>n;
    	      S = songaytrongthang();
    
    	      if ((ng > 0) && (ng <= S) && (t>= 1) && (t <= 12 ) )
    		  k = 1;
    	      else
    		{  cout<<" Khong co ngay nay trong nam "<<endl;
    		   cout<<" Hay nhap lai "<<endl;
    		   getch();
    		   
    		 }
    	    } while(k == 0);
         }
                
                 void hienthi()
                 { cout<<ng<<"/"<<t<<"/"<<n<<endl;}
                 int nhuan()
                 {return (n%4==0)&&(n%100!=0)||(n%400==0);}
                 int songaytrongthang()
                 {return (t==4)||(t==6)||(t==9)||(t==11)?30:(t==2)?28+nhuan():31;}
                 int songaytrongnam()
                 {return nhuan()?366:365;}
                 int sosanh(date ob)
                 { return(n>ob.n)?1:(n<ob.n)?0:(t>ob.t)?1:(t<ob.t)?0:(ng<ob.ng)?1:0;}
              date  congngay()
    	 {
    	   int nday;
    	     nday =songaytrongthang();
    	   if (++ng>nday)
    	    {
    	      ng= 1;
    	      if (++t>12)
    	       { t = 1;
    		      t++;
    		    }
    	    }
    	    return *this; 
    	  }
    };
          int main()
    {    date ob1,ob2;
          cout<<"nhap ngay thang nam ob1=  "<<endl; ob1.nhap();
         cout<<"nhap ngay thang nam ob2=   "<<endl;  ob2.nhap();
         ob1.hienthi();
         ob2.hienthi();
         if(ob1.nhuan()) cout<<"ob1 la nam nhuan"<<endl;
           else cout<<"ob1 khong phai la nam nhuan"<<endl;
         cout<<"so ngay trong thang cua ob1 la"<<ob1.songaytrongthang()<<endl;
         cout<<"so ngay trong thang cua ob2 la"<<ob2.songaytrongthang()<<endl;
         cout<<"so ngay trong nam cua ob1 la:" <<ob1.songaytrongnam()<<endl;
         if(ob1.sosanh(ob2)) cout<<"ob1 dung truoc ob2 theo thu tu ngay"<<endl;
         else cout<<"ob1 khong dung truoc ob2 theo thu tu ngay"<<endl;
         cout<<"ngay sau khi cong vao ob1 la"; ob1.congngay();
         ob1.hienthi();
         getch();
         return 0;
         }

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

  1. Nhập ngày tháng năm in ra ngày tháng năm kế tiếp?
    Gửi bởi duongtk77 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 17
    Bài viết cuối: 26-03-2014, 11:14 PM
  2. 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
  3. Giảm thuế thu nhập doanh nghiệp năm 2011, miễn thuế thu nhập cá nhân đến hết năm 2012
    Gửi bởi tailanh8423 trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 28-05-2012, 01:10 PM
  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
  5. Nhập năm và in số ngày trong năm đó
    Gửi bởi phanvanngoc 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: 10-07-2010, 10:48 PM

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