Chủ đề: Chương trình đếm ngày
-
04-08-2008, 11:10 AM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Chương trình đếm ngày
Đề : Viết chương trình đếm số ngày từ ngày 1/1/1900 đến một ngày tùy ý sau đó.
Mình đang bí ở bài tập này mong các bạn giúp đỡView more random threads:
- giá trị trả về trong hàm
- Dùng cấu trúc file
- xử lý xung tín hiệu trong vẽ phổ phóng xạ, moi xung chua 256 gia tri
- Bài toán tìm kiếm nhị phân này bị lỗi gì ?
- Vửa thi trượt C++ pro giúp với !!
- Bài toán tìm đường đi ngắn nhất với thuật toán Dijsktra
- Sắp xếp mảng theo chiều tăng dần
- Bàn về Giải thuật nối hai quan hệ trong Cơ sở dữ liệu
- Lỗi Chồng Toán Tử
- tầm quan trọng của ngôn ngữ C
-
04-08-2008, 11:39 AM #2Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi khongdaubang
-
04-08-2008, 11:54 AM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Mình thấy cách giải của bài đó phức tạp bởi hiện giờ mình mới học về c và yêu cầu của thầy mình là giải mà sử dụng vòng lặp như while hay for ,chứ lớp mình vẫn chưa học về mảng hay đệ qui hay những thứ sâu xa khác.
-
04-08-2008, 11:57 AM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
code của Ada thuộc hàng Advance rồi [IMG]images/smilies/biggrin.png[/IMG]
@khongdaubang: bạn cứ tư duy bình thường đi giống thế này :
_ trg` hợp đặc biệt: cùng tháng,cùng năm lấy 2 số ngày trừ nhau
_ nếu khác tháng,cùng năm thì tính khoảng cách từ [(tháng 1)->(tháng y)] đổi ra ngày rồi + khoảng cách từ ngày 1/[tháng y] tới [ngày x]/[tháng y]
_ nếu khác tháng ,khác năm thì tính khoảng cách từ 1/1/[năm z] -> [ngày x]/[tháng y]/[năm z] + (khoảng cách từ năm 1901 -> [năm z] đổi ra ngày) + 365
-
04-08-2008, 12:03 PM #5Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi khongdaubang
-
04-08-2008, 12:24 PM #6Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Mới học C có lẻ thầy bạn cho làm bài này để học về giải thuật, cách tư duy 1 bài toán. Do đó cách dùng công thức của Ada khó được chấp nhận. Hồi trước lúc dạy C thầy tui bắt làm bài in ra thứ của 1 ngày bất kỳ cũng dạy cách tính thủ công chứ không xài công thức.
Để làm được bài này nếu không biết công thức có thể làm như sau:
1) Kiểm tra năm tính đến xem có phải năm nhuận:
Mã:if ((n % 400 == 0) || (n % 4 == 0 && n % 100 != 0)) nhuan = 1;else nhuan = 0;
Mã:dem = 0;for (i = 1900; i < n; i++) { if(i % 400 == 0 || (i % 4 == 0 && i % 100 != 0)) dem++;}
Mã:tong = 365L * (n - 1) + dem;
Mã:for (i = 1; i < th; i++) { switch(i){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: songay = 31; break; case 4: case 6: case 9: case 11: songay = 30; break; case 2: if (nhuan) songay = 29; else songay = 28; break; } tong += songay;}
Mã:tong += ng - 1;
-
04-08-2008, 12:35 PM #7Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
À quên! Trước khi đếm số ngày thì phải kiểm tra xem ng/th cần đếm tới nhập vào có hợp lệ không nữa.
-
10-08-2008, 10:13 AM #8Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Bài này nên đổi lại như sau thì hay quá.
Nhập vào ngày tháng năm bắt đầu.
Nhập vào ngày tháng năm kết thúc.
Tìm tổng số ngày trong khoảng thời gian đó.
-
21-08-2008, 10:57 AM #9Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
các bạn xem đoạn code này rồi góp ý cho mình nha!
Mã:#include<stdio.h> #include<conio.h> signed long int enterday(void); void main() { signed long int vitri_1,vitri_2,ketqua; clrscr(); printf("*** CT dem so ngay *** "); printf(" Nhap thoi diem bat dau:"); vitri_1=enterday(); printf(" Nhap thoi diem ket thuc:"); vitri_2=enterday(); ketqua=vitri_2-vitri_1; printf("So ngay la %ld",ketqua); getch(); } //-------------------------------------------------- signed long int enterday(void) { int d,m,y,i; signed long int td=0,tm=0,ty=0; nl:printf(" Nhap ngay: "); scanf("%d",&d); printf(" Nhap thang: "); scanf("%d",&m); printf(" Nhap nam: "); scanf("%d",&y); if(y<1) { printf(" Nhap khong hop le"); goto nl; } else if(m<1||m>12) { printf(" Nhap khong hop le"); goto nl; } else { switch (m) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: if(d<1||d>31) { printf(" Nhap khong hop le"); goto nl; } else break; case 4: case 6: case 9: case 11: if(d<1||d>30) { printf(" Nhap khong hop le"); goto nl; } else break; case 2: if((y%400==0)||(y%4==0&&y%100!=0)) { if(d<1||d>29) { printf(" Nhap khong hop le"); goto nl; } else break; } else { if(d<1||d>28) { printf(" Nhap khong hop le"); goto nl; } else break; } } } for(i=1;i<y;i++) { if((i%400==0)||(i%4==0&&i%100!=0)) ty=ty+366; else ty=ty+365; } for(i=1;i<m;i++) { switch(i) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: tm=tm+31; break; case 4: case 6: case 9: case 11: tm=tm+30; break; case 2: if((y%400==0)||(y%4==0&&y%100!=0)) { tm=tm+29; break; } else { tm=tm+28; break; } } } for(i=1;i<d;i++) { td=td+1; } ty=ty+tm+td; return(ty); }
Với sự đa dạng và phong phú về mẫu mã và giá cả, choxeonline.vn hứa hẹn sẽ là địa chỉ tin cậy cho những ai đang tìm kiếm chiếc xe ô tô ưng ý. Từ những mẫu xe hạng sang đến những chiếc xe gia đình...
Khám Phá Đa Dạng Sản Phẩm Xe Ô Tô...