Tính khoảng cách giữa 2 ngày tháng năm bất kỳ ining: PHP: //Tính khoang cach giua 2 ngay thang nam bat ki#include <iostream.h>struct ngaythang{ unsigned int ngay; unsigned int thang; unsigned int nam;};void main(){ ngaythang nt1,nt2; cout<<"Moi ban nhap ngay thang nam thu nhat : "; cin>>nt1.ngay>>nt1.thang>>nt1.nam; cout<<"Moi ban nhap ngay thang nam thu hai : "; cin>>nt2.ngay>>nt2.thang>>nt2.nam; unsigned int count1=0,count2=0,count; unsigned int i,j,k; for(i=(nt1.nam);i<=(nt2.nam);i++) { for(j=1;j<=12;j++) { for(k=1;k<=30;k++) { count1++; if(k==(nt2.ngay) && j==(nt2.thang) && i==(nt2.nam)) break; } if(k==(nt2.ngay) && j==(nt2.thang) && i==(nt2.nam)) break; } if(k==(nt2.ngay) && j==(nt2.thang) && i==(nt2.nam)) break; } for(i=1;i<=nt1.thang;i++) { for(j=1;j<=30;j++) { count2++; if(j==nt1.ngay && i==nt1.thang) break; } if(j==nt1.ngay && i==nt1.thang) break; } count = count1 - count2; cout<<"So ngay tu "<<nt1.ngay<<"/"<<nt1.thang<<"/"<<nt1.nam<<"=>"<<nt2.ngay<<"/"<<nt2.thang<<"/"<<nt2.nam<<" la : "<<count<<" ngay";}
cách này khó hiểu thể, có cách khác hay hơn, dễ hiểu hơn đó, màk nhân đây, hỏi cái này luôn, có ai viết được hàm nhập ngày tháng hôk, share ik, thay vì viết nhiều lần trong hàm main thì ta viết 1 hàm nhập cho ngày tháng đoá, ai viết được chính xác share nghe.
Cái trên là đơn giản rồi. Còn viết hàm nhập thì có khó gì! khai báo cấu trúc như trên và khai báo nt thuộc kiểu cấu trúc ngaythang muốn nhập nhiều ngày tháng cùng lúc thì khai báo mảng cấu trúc nt[10] thuộc kiểu ngaythang và khai báo thêm hàm nhập void nhap() { cout<<"Nhap ngay thang nam : "; cin>>nt.ngay>>nt.thang>>nt.nam; } còn nếu khai báo để nhập nhiều ngày tháng thì viết như sau void nhap(int n) //n là số ngày tháng muốn nhập vào { int i; for(i=1;i<=n;i++) { cout<<"Nhap ngay thang nam : "; cin>>nt.ngay>>nt.thang>>nt.nam; } }
ok - cái này thì chắc chắn ai cũng biết khi bắt đầu viết hàm main, nhưng màk khi xài hàm nhập để nhập 2 ngày thì nó vẫn cho nhập nhưng không trả về giá trị ở hàm main, tức là có nhập được, nhưng sau khi nhập thì giá trị của nó vẫn không có, không thể thực hiện các lệnh tính toán trên hàm main với 2 ngày tháng đó. ( nghĩa là giá trị nhập chỉ ở trong hàm NHẬP chứ hàm main thì hoàn toàn không được gán giá trị đó ).
Mình quên nhắc bạn là khi khai báo phải toàn cục . Và muốn nó trả về giá trị mà không khai báo toàn cục bạn khai báo kiểu trả về là ngaythang Thế thôi!
Bai tập C# về hàm tính khoảng cách giữa 2 bộ ngày viết bằng C# nè bạn nick :zozophongan@yahoo.com public void tinhsongay() { int sn = 0; //-------------------------------------------------- //********************************************** if (nam2 >= nam) { if (ngay == ngay2 && thang == thang2) { for (int i = nam; i < nam2; i++) { if ((i % 4 == 0 && i % 100 != 0) || i % 400 == 0) { sn = sn + 366; Console.WriteLine("\nsn= {0}", sn); } else if ((i % 4 != 0 && i % 100 == 0) || i % 400 != 0) { sn = sn + 365; Console.WriteLine("\nsn= {0}", sn); } } } else { if (ngay != ngay2 || thang != thang2) { for (int i = nam; i < nam2; i++) { if ((i % 4 == 0 && i % 100 != 0) || i % 400 == 0) { sn = sn + 366; Console.WriteLine("\nsn= {0}", sn); } else if ((i % 4 != 0 && i % 100 == 0) || i % 400 != 0) { sn = sn + 365; Console.WriteLine("\nsn= {0}", sn); } } } if (thang >= thang2) { for (int i = thang2; i < thang; i++) { Console.WriteLine("thang ={0}", i); if (i == 2 && ((nam % 4 == 0 && nam % 100 != 0) || nam % 400 == 0)) { sn = sn - 29; Console.WriteLine("\nsn= {0}", sn); } else if (i == 2 && ((nam % 4 != 0 && nam % 100 == 0) || nam % 400 != 0)) { sn = sn -28; Console.WriteLine("\nsn= {0}", sn); } if (i == 4 || i == 6 || i == 9 || i == 11 && i != 2) { sn = sn - 30; Console.WriteLine("\nsn= {0}", sn); } else if (i != 2) sn = sn - 31; Console.WriteLine("\nsn= {0}", sn); } } else { for (int i = thang; i < thang2; i++) { Console.WriteLine("thang ={0}", i); if (i == 2 && ((nam % 4 == 0 && nam % 100 != 0) || nam % 400 == 0)) { sn = sn + 29; Console.WriteLine("\nsn= {0}", sn); } else if (i == 2 && ((nam % 4 != 0 && nam % 100 == 0) || nam % 400 != 0)) { sn = sn + 28; Console.WriteLine("\nsn= {0}", sn); } if (i == 4 || i == 6 || i == 9 || i == 11 && i != 2) { sn = sn + 30; Console.WriteLine("\nsn= {0}", sn); } else if (i != 2) sn = sn + 31; Console.WriteLine("\nsn= {0}", sn); } } } sn = sn + (ngay2 - ngay); if (thang > 2 && ((nam % 4 == 0 && nam % 100 != 0) || nam % 400 == 0) && nam2 > nam) sn = sn - 1; else if (thang2 > 2 && ((nam2 % 4 == 0 && nam2 % 100 != 0) || nam2 % 400 == 0) && nam2 > nam) sn = sn + 1; Console.WriteLine("\nsn= {0}", sn); } //******************************************************************************* //------------------------------------------------------------------------------nguoc lai cua nam >nam2 else { if (ngay == ngay2 && thang == thang2) { for (int i = nam2; i < nam; i++) { if ((i % 4 == 0 && i % 100 != 0) || i % 400 == 0) { sn = sn + 366; Console.WriteLine("\nsn= {0}", sn); } else if ((i % 4 != 0 && i % 100 == 0) || i % 400 != 0) { sn = sn + 365; Console.WriteLine("\nsn= {0}", sn); } } } else { //Console.WriteLine("Nam 2={0}", nam2); if (ngay != ngay2 || thang != thang2) { for (int i = nam2; i < nam; i++) { if ((i % 4 == 0 && i % 100 != 0) || i % 400 == 0) { sn = sn + 366; Console.WriteLine("\nsn= {0}", sn); } else if ((i % 4 != 0 && i % 100 == 0) || i % 400 != 0) { sn = sn + 365; Console.WriteLine("\nsn= {0}", sn); } } } if (thang2 >= thang) { for (int i = thang; i < thang2; i++) { Console.WriteLine("thang ={0}", i); if (i == 2 && ((nam2 % 4 == 0 && nam2 % 100 != 0) || nam2 % 400 == 0)) { sn = sn - 29; Console.WriteLine("\nsn= {0}", sn); } else if (i == 2 && ((nam2 % 4 != 0 && nam2 % 100 == 0) || nam2 % 400 != 0)) { sn = sn - 28; Console.WriteLine("\nsn= {0}", sn); } if (i == 4 || i == 6 || i == 9 || i == 11 && i != 2) { sn = sn - 30; Console.WriteLine("\nsn= {0}", sn); } else if (i != 2) sn = sn - 31; Console.WriteLine("\nsn= {0}", sn); } } else { for (int i = thang2; i < thang; i++) { Console.WriteLine("thang ={0}", i); if (i == 2 && ((nam2 % 4 == 0 && nam2 % 100 != 0) || nam2 % 400 == 0)) { sn = sn + 29; Console.WriteLine("\nsn= {0}", sn); } else if (i == 2 && ((nam2 % 4 != 0 && nam2 % 100 == 0) || nam2 % 400 != 0)) { sn = sn + 28; Console.WriteLine("\nsn= {0}", sn); } if (i == 4 || i == 6 || i == 9 || i == 11 && i != 2) { sn = sn + 30; Console.WriteLine("\nsn= {0}", sn); } else if (i != 2) sn = sn + 31; Console.WriteLine("\nsn= {0}", sn); } } } sn = sn + (ngay - ngay2); if (thang2 > 2 && ((nam2 % 4 == 0 && nam2 % 100 != 0) || nam2 % 400 == 0) && nam > nam2) sn = sn - 1; else if (thang > 2 && ((nam % 4 == 0 && nam % 100 != 0) || nam % 400 == 0) && nam > nam2) sn = sn + 1; Console.WriteLine("\nsn= {0}", sn); } Console.WriteLine("{0}" ,sn); }