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

Đề tài: bài tìm thứ của một ngày bât kỳ này sai ở đâu?

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

    Wink bài tìm thứ của một ngày bât kỳ này sai ở đâu?

    đây là bài được post http://forums.congdongcviet.com/showthread.php?t=180
    nhưng khi em chạy thử thì được kết quả sai.

    Code:
    #include <stdio.h>
    #include <conio.h>
     void main()
     {
    	clrscr();
    	int ngay , thang , nam,s=0,x;
    	long t;
    	do
    	{
    		printf("Nhap vao Ngay :");
    		scanf("%d",&ngay);
    		printf("Nhap vao Thang :");
    		scanf("%d",&thang);
    		printf("Nhap vao Nam :");
    		scanf("%d",&nam);
    	} while(((ngay<0)||(ngay>31)||(thang<0)||(thang>12))||((thang==2)&&(ngay>29)));
    
    	for(int i=1;i<=nam;i++)
    	{
    		if((i%400==0)||((i%4==0)&&(i%100!=0)))
    			s+=1;
    	}
    		t=(nam*365)+s;
    		s=0;
    	for(int j=1;j<thang;j++)
    	{
    		switch(j)
    		{
    			case 2:
    			  if ((nam%400==0)||((nam%4==0)&&(nam%100!=0)))
    {
    s+=29;
    					break;
    				}
    				Else
    				{
    					S+=28;
    					Break;
    				}
    			case 4:
    			case 6:
    			case 9:
    			case 11:
    				s+=30;
    				break;
    			Default:
    				s+=31;
    				break;
    		}
    	}
    		t+=s+ngay;
    	textcolor(6-9);
    	x=t%7;
    	printf("\n\n Ngay %d Thang %d Nam %d La Ngay ",ngay,thang,nam);
    	switch(x)
    	{
    		case 0:
    			cprintf("Chu Nhat ");
    			break;
    		case 1:
    			cprintf("Thu Hai ");
    			break;
    		case 2:
    			cprintf("Thu Ba ");
    			break;
    		case 3:
    			cprintf("Thu Tu ");
    			break;
    		case 4:
    			cprintf("Thu Nam ");
    			break;
    		case 5:
    			cprintf("Thu Sau ");
    			break;
    		case 6:
    			cprintf("Thu Bay ");
    			break;
    	}
    
    	getch();
    
     }
    mà em nghĩ là sai trong việc khai báo biến nên khi tính tổng số ngày t=(nam*365)+s; bị sai kết quả .em khi thử thay khai báo lại là
    Code:
    long int ngay , thang , nam,s=0,x;
    .thì ko thể nào thoát ra đc vòng lặp đc
    pro nay lam ơn có thể chỉ chỗ nào sai dc ko. và tại sao khi thay lại ko thể nào thoát khỏi đc vòng lặp.

  2. #2
    No Avatar
    satthu Khách

    Đây là code của mình:
    Code:
    #include<stdio.h>
    #include<conio.h>
    #include<math.h>
    void main()
    {
    int ng,t,n,s,thu,x,i;
    thu=0;x=0;
    printf("nhap ngay, thang, nam:\n");
    scanf("%d%d%d",&ng,&t,&n);
    if (n%4==0)
      {int a[12]={31,29,31,30,31,30,31,31,30,31,30,31};
    	for (i=0;i<=(t-2);i++) x=x+a[i];
    	s=n+(n-1)/400-(n-1)/100+(n-1)/4+x+ng;
    	thu=s%7;
    	if (thu==0) thu=7;
                    if (thu==1) printf("ngay %d thang %d nam %d la ngay chu nhat",ng,t,n);
    	else            printf("ngay %d thang %d nam %d la ngay thu %d",ng,t,n,thu);
      }
    else
      {int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    	for (i=0;i<=(t-2);i++) x=x+a[i];
    	s=n+(n-1)/400-(n-1)/100+(n-1)/4+x+ng;
    	thu=s%7;
    	if (thu==0) thu=7;
                    if (thu==1) printf("ngay %d thang %d nam %d la ngay chu nhat",ng,t,n);
    	else            printf("ngay %d thang %d nam %d la ngay thu %d",ng,t,n,thu);
      }
     getch();
    }

  3. #3
    Ngày gia nhập
    03 2009
    Bài viết
    2

    cam' ơn bạn đã trả lời câu hỏi của mình nhưng code của bạn khi nhập vào ngày tháng năm ko đúng nó vẫn. cho kết quả như bt mà ko báo lỗi.nhưng dù sao cũng cám ơn bạn.

  4. #4
    Ngày gia nhập
    01 2009
    Bài viết
    165

    code của bạn sai vì vòng for đầu tiên bạn thử bỏ vòng for đầu tiên xem.

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