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

Đề tài: Check giùm mình đoạn code về ngày tháng này với! ^^

  1. #1
    No Avatar
    mèo lười Khách

    Wink Check giùm mình đoạn code về ngày tháng này với! ^^

    Đoạn code sau đây là để kiểm tra ngày tháng năm nhập vào có đúng không và xuất ra màn hình. Ban đầu thì mình làm được nhưng hơi dài dòng, sau mình dùng thêm biến phụ i thì nó cứ hiện ra "Bạn đã nhập sai" hoài, mình check lại mãi mà vẫn ko biét nó sai ở đoạn nào . Xem giùm mình nhé! (^-^)

    Code:
    #include <stdio.h>
    #include <conio.h>
    int main ()
    {
         int ngay, thang, nam, i;
         i=2;
         do 
         {
         printf ("\nNhap ngay, thang, nam: ");
         scanf ("%d%d%d", &ngay, &thang, &nam);
         if (ngay<0) i=1;
         else
             {
                     if (thang<0) i=1;
                     else
                     {
                         if (thang>12) i=1;
                         else
                         {
                             if (nam<0) i=1;
                             else
                             {
                                 switch (thang)
                                 {
                                 case 1:
                                 case 3:
                                 case 5:
                                 case 7:
                                 case 8:
                                 case 10:
                                 case 12:
                                      if (ngay>31)
                                      i=1;
                                      break;
                                 case 4:
                                 case 6:
                                 case 9:
                                 case 11:
                                      if (ngay>30)
                                      i=1;
                                      break;
                                 case 2:
                                      if (nam%400==0)
                                      {
                                        if (ngay>29)
                                        i=1;
                                      }
                                        else
                                        {
                                        if (ngay>28)
                                        i=1;
                                        }
                                  break;
                                  }
                             }
                         }
                     }
             }
             if (i=1) printf ("Ban da nhap sai");
             } while (i=1);
             printf ("Ban da nhap vao ngay %d thang %d nam %d", ngay, thang, nam);                 
             getch();
             return 0;
         }
    Đã được chỉnh sửa lần cuối bởi mèo lười : 04-11-2008 lúc 05:18 PM. Lý do: chinh sua

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

    mình nghĩ bạn sai ở chỗ gán i=1 lần nào cũng gán bằng 1 sai là đúng rồi. ặc sia nhiều thứ lắm else ì linh tinh beng cả lên. bạn nên xem lại về các câu lệnh điều kiện nhé
    mình nghĩ thế này là đủ
    Code:
    #include <stdio.h>
    #include <conio.h>
    int main ()
    {
    	int ngay, thang, nam, i;
    
    		printf ("\nNhap ngay, thang, nam: ");
    		scanf ("%d%d%d", &ngay, &thang, &nam);
    		if (ngay<0 || thang<0 || thang>12)
          printf("\nban da nhap sai");
          else
    		printf ("Ban da nhap vao ngay %d thang %d nam %d", ngay, thang, nam);
    		getch();
    
    }
    Đã được chỉnh sửa lần cuối bởi minhphuong90 : 04-11-2008 lúc 05:26 PM.

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

    bạn giải ì xèo cả lên....bài này giải đơn giản như phương là chuẩn rồi
    minh phương 90 ban có yahoo ko cho mình,thx,mình gặp khá nhìu vấn đề về c(cần giúp đỡ)
    avatar kinh wa

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

    Mình cũng mới học C thôi. hì hì trình vẫn tèm nhèm lắm.
    YM mình nè: chip_nho16 lúc nào cũng muốn học hỏi trao đổi

  5. #5
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    @To Minhphuong: code của mèo lười có ý tưởng xét tất cả các TH nên có dài là đúng rồi. Ngược lại code trên của bạn chắc tay hơn nhưng thiếu hết các TH.

    @To Mèo lười: Suy nghĩa sáng sủa ra để bài làm sáng sủa hơn. Nếu đã học chương trình con và mảng thì nên áp dụng vào.

    Bài trên của em không phải sửa nhiều, chỉ cần
    Code:
             if (i=1) printf ("Ban da nhap sai");
             } while (i=1);
    Thay tất cả = thành ==
    Cả cách tính năm nhuận chưa chính xác, xem tại đây.

    Thường thì với kiểu bài này anh sẽ sử dụng chương trình con hay hơn nhiều, nhưng anh sẽ sửa bài trên của em để em rút kinh nghiệm.

    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3.  
    4. int main ()
    5. {
    6.     int ngay, thang, nam, i;
    7.     printf ("\nNhap ngay, thang, nam: ");
    8.     do
    9.     {
    10.         i=1;
    11.         scanf ("%d%d%d", &ngay, &thang, &nam);
    12.         if (nam<0) i=0;
    13.         else if (thang<0 || thang>12) i=0;
    14.         else
    15.         {
    16.                         switch (thang)
    17.                         {
    18.                             case 1:
    19.                             case 3:
    20.                             case 5:
    21.                             case 7:
    22.                             case 8:
    23.                             case 10:
    24.                             case 12:
    25.                                 if (ngay>31)
    26.                                     i=0;
    27.                                 break;
    28.                             case 4:
    29.                             case 6:
    30.                             case 9:
    31.                             case 11:
    32.                                 if (ngay>30)
    33.                                     i=0;
    34.                                 break;
    35.                             case 2:
    36.                                 if (nam%4==0)
    37.                                 {
    38.                                     if (nam%100==0 && nam%400==0 && ngay>29) i=0;
    39.                                     else if (ngay>28) i=0;
    40.                                 }
    41.                                 else
    42.                                     if (ngay>28) i=2;
    43.                             break;
    44.                         }
    45.  
    46.         }
    47.         if (!i) printf ("Ban da nhap sai. Yeu cau nhap lai: ");
    48.     } while (!i);
    49.     printf ("Ban da nhap vao ngay %d thang %d nam %d", ngay, thang, nam);
    50.     getch();
    51.     return 0;
    52. }

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

  1. Giải thuật | Code cây nhị phân, check giùm mình với?
    Gửi bởi quicksilver89 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 12-06-2013, 07:45 PM
  2. Check giùm mình đoạn code mảng
    Gửi bởi vinhxuan27 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 12-12-2009, 04:50 PM
  3. Check giùm mình đoạn code chuẩn hóa chuỗi. thanks
    Gửi bởi vinhxuan27 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 12-12-2009, 12:43 AM
  4. check giùm với được ko?
    Gửi bởi matnai_8387 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 28-12-2007, 03:36 PM
  5. bác nào check giùm em cái bài về xử lý file với
    Gửi bởi comeonbaby trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 27-12-2007, 10:23 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