01/10/2018, 13:36
Code tính khoảng cách giữa 2 ngày bị sai kết quả
Đề: .Nhập vào 2 bộ ngày, tháng, năm. Tính khoảng cách (số ngày) giữa hai ngày vừa
nhập.
mình xài mảng ko có error j hết nhưng kết quả ra sai hoàn toàn, không biết thuật toán mình có sai ở đâu không
#include<stdio.h>
void nhap(int &d1, int &d2, int &m1, int &m2, int &y1, int &y2);
int tinh(int d1, int d2, int m1, int m2, int y1, int y2, int thang[], int thangnhuan[]);
void xuat( int ngay);
void main()
{
int thang[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int thangnhuan[12]={31,29,31,30,31,30,31,31,30,31,30,31};
int d1,d2,m1,m2,y1,y2;
nhap(d1,d2,m1,m2,y1,y2);
int ngay=tinh(d1,d2,m1,m2,y1,y2,thang,thangnhuan);
xuat(ngay);
}
void nhap(int &d1, int &d2, int &m1, int &m2, int &y1, int &y2)
{
printf("nhap ngay thang nam thu nhat");
scanf("%d%d%d",&d1,&m1,&y1);
printf("nhap ngay thang nam thu hai");
scanf("%d%d%d",&d2,&m2,&y2);
}
int tinh(int d1, int d2, int m1, int m2, int y1, int y2,int thang[], int thangnhuan[])
{
int S;
while(!(m1==m2&&y1==y2))
{
if((y1%4==0&&y1%100!=0)||(y1%400==0))
{
S=thangnhuan[m1-1]-d1+1;
m1++;d1=1;
if(m1==13)
{
y1++;
m1=1;d1=1;
}
continue;
}
S=thang[m1-1]-d1+1;
m1++;d1=1;
if(m1==13)
{
y1++;
m1=1;d1=1;
}
}
return S;
}
void xuat( int ngay)
{
printf("%d",ngay);
}
Bài liên quan
Ví dụ, input
không thể ra 30 được.
là sao bạn? mình cộng ngày theo từng tháng mà. Nếu tháng=13 thì năm++ và khởi tạo lại tháng =1 ngày =1 rồi tiếp tục tính như vậy
Bạn code rối quá.
Xem thuật toán ok hơn ở đây:
Find number of days between two given dates - GeeksforGeeks
Given two dates, find total number of days between them. The count of days must be calculated in O(1) time and O(1) auxiliary space. Examples:… Read More »
ok mình hiểu rồi cám ơn bạn