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

Đề tài: cách xử lý ngày tháng năm

  1. #1
    Ngày gia nhập
    09 2008
    Bài viết
    13

    Mặc định cách xử lý ngày tháng năm

    điều kiện để xử lý là tháng 2 chỉ cho phép nhập dc tối đa là 29 ngày tháng 4,6,9,11 thì 30 ngày và cho phép người dùng nhập vào theo thứ tự ngày tháng năm xong rùi mới xử lý.Nếu sai bắt nhập lai.
    Đây là code của mình làm hoài ko dc mong các bạn giúp dùm thanks
    Code:
    #include<stdio.h>
    #include<conio.h>
    
    
    typedef struct ctngay
    {
    int ngay;
    int thang;
    int nam;
    }ngay;
    
    void nhap(ngay &b)
    {      clrscr();
    do
    {
      do
      {
      printf("nhap ngay");scanf("%d",&b.ngay);
      }while((31<b.ngay)||(b.ngay<1));
      do
      {
      printf("nhap thang");scanf("%d",&b.thang);
      }while((12<b.thang)||(b.thang<1));
      do
      {
      printf("nhap nam");scanf("%d",&b.nam);
    
      }while(2000>b.nam);
    
    
    
    
    
    }while ( ((b.thang==2)&&( b.ngay>29))||((b.thang=4)&&(b.ngay>30)));
    }
    void xuat(ngay b)
    {
     printf("%d/%d/%d",b.ngay,b.thang,b.nam);
    }
    void main()
    {
    ngay b;
     nhap(b);
     xuat(b);
    
    getch();
    }

  2. #2
    Ngày gia nhập
    09 2007
    Bài viết
    724

    zkday gợi ý thế này nhé.

    dùng một mảng khai báo toàn cục để lưu trử số ngày tối đa của 12 tháng.
    ví như:

    C Code:
    1. int MaxDay[] = {31,28,.....,31};
    ứng với tháng thứ i thì vào vị trí thứ i-1 để xem hoặc nếu lười thì làm như sau:
    C Code:
    1. int MaxDay[] = {-1,31,28,.....,31};
    với tháng thứ i thì vào vị trí thứ i để xem.


    ok nếu mà năm nhuận thì tháng 2 tăng lên 1 ngày tức 29 ngày.
    vậy chỉ việc làm như thế này thui.
    C Code:
    1. if(Nhuan(Nam))
    2.     A[1]+= 1; // nếu dùng trường hợp 1.
    3.     A[2]+= 1; // nếu dùng trường hợp 2.

    chúc bạn thành công.

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

    Mình vẫn chưa hiểu bạn ơi có thể giải thích thêm dùm mình hay có cách nào dễ hơn không???
    Cho người dùng nhập vào theo thứ tự ngày tháng năm xong rùi mới xử lý.Nếu sai bắt nhập lại với cách trên mình phải xử lý như thế nào đây???

  4. #4
    Ngày gia nhập
    09 2007
    Bài viết
    724

    Mình nghĩ cách này là cách tốt đối với những bạn mới tiếp cận với lập trình nên mới đưa ra ở đây.(zkday nghĩ là bạn mới tiếp cận với code chưa lâu).
    ko biết bạn đã học về mảng chưa?

    zkday sẽ mô tả rõ hơn ý tưởng của bài này cho bạn:

    như trên zkday chỉ giúp bạn là làm sao để kiểm tra được số ngày tối đa trong một tháng.
    vì bạn để ý là tất cả các năm số ngày trong một tháng là cố định (ngoại trừ năm nhuận có tháng 2 là 29 ngày.) nên ý tưởng là dùng mảng lưu trữ những cái cố định này.(ở đây bạn có thể dùng define hoặc là const cũng được).

    nên để kiểm tra ngừoi dùng nhập có đúng không thì ta làm như sau:

    ok. Mã giã chi tiết nè bạn. dạo này biếng code mấy cu C lắm
    PHP Code:
    b1 kêu người dùng nhập vào.
    b2 lấy ra tháng
       2.1 
    kiểm tra tháng nhỏ hơn hoặc bằng 12 hay không nếu đúng thì sang b3.
      
    2.2 nếu sai thì bắt người dùng nhập lại.
    b3 kiểm tra tháng có là 2 hay không nếu không sang bước 7
    b4 
    nếu tháng là 2 thì sang b5 nếu không sang bước 7.
    b5 
    nếu năm nhuận thì cho phép người dùng nhập tới 29.
    b6 
    nếu năm là không nhuận thì cho phép người dùng nhập tới 28 thôi.
    b7 lấy ngày mới nhập kiểm tra xem:
      
    7.1 nếu ngày nhập nhỏ hơn MaxDay[ng.thang-1thì ok.
      
    7.2 nếu ngày nhập lớn hơn MaxDay[ng.thang-1thì báo lỗi bắt ngừoi dùng nhập lại
    bạn tự chuyển đổi qua C nhé.

    chúc bạn thành công.

  5. #5
    Ngày gia nhập
    09 2008
    Bài viết
    13

    code mình mới làm đây chạy nó ra sai!không cần xét đến năm nhuần,bạn coi dùm mình sai chỗ nào???thanks

    Code:
    #include<stdio.h>
    #include<conio.h>
    
    
    typedef struct ctngay
    {
    int ngay;
    int thang;
    int nam;
    }ngay;
    
    void nhap(ngay &b)
    {      clrscr(); int kt[31,29,31,30,31,30,31,31,30,31,30,31],k;
    do
    {
      do
      {
      printf("nhap ngay");scanf("%d",&b.ngay); k=0;
      }while((31<b.ngay)||(b.ngay<1));
      do
      {
      printf("nhap thang");scanf("%d",&b.thang); k=0;
      }while((12<b.thang)||(b.thang<1));
      do
      {
      printf("nhap nam");scanf("%d",&b.nam); k=0;
    
      }while(2000>b.nam);
    
    
    
    	if(b.ngay<kt[b.thang-1])
    
    		 k=0;
    	  else k=1;
    
    
    
    }while (k==1);
    }
    void xuat(ngay b)
    {
     printf("%d/%d/%d",b.ngay,b.thang,b.nam);
    }
    void main()
    {
    ngay b;
     nhap(b);
     xuat(b);
    
    getch();
    }

  6. #6
    Ngày gia nhập
    04 2008
    Bài viết
    336

    Mặc định cách xử lý ngày tháng năm

    chài làm gì mà ép buộc người nhập phải nhập năm > 2000 thế ...
    với lại cái này ... -_-'
    Code:
    int kt[31,29,31,30,31,30,31,31,30,31,30,31]
    năm nhuận thì bạn thêm cái này vào
    C Code:
    1. int nam_nhuan(int year)
    2. {
    3.     return ((year%4==0 && year%100!=0) || (year%400==0));
    4. }
    5. //1 là năm nhuận, 0 thì ko phải năm nhuận
    code ra gió bão

  7. #7
    Ngày gia nhập
    09 2007
    Bài viết
    724

    Trích dẫn Nguyên bản được gửi bởi lovedtn Xem bài viết
    code mình mới làm đây chạy nó ra sai!không cần xét đến năm nhuần,bạn coi dùm mình sai chỗ nào???thanks
    cái này thì bạn nên nhập tháng trước khi nhập ngày bạn ah.
    để kiểm tra cho nó dễ.

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. Máy Photocopy Ricoh 2018D thanh lý giá: 11,5 triệu_Bảo hành 1 năm _ bảo trì miễn phí 5 năm tận nơi sử dụng
    Gửi bởi thuongfoto01 trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 1
    Bài viết cuối: 28-02-2012, 10:34 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