Học Tiếng Anh 99-Giỏi Tiếng Anh 99%

Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

Học Tiếng Anh 99-Giỏi Tiếng Anh 99%

WelCome To Học Tiếng Anh 99-Học Tiếng Anh Online-Tiếng Anh trẻ em-Tiếng Anh quốc tế-Tiếng Anh phổ thông...

Tìm Kiếm Trên 10,000+ Tài Liệu

41 Điểm Ngữ Pháp Căn Bản

học tiếng anh trực tuyến-học tiếng anh giao tiếp-tieng anh online mien phi-phương pháp học tiếng anh-học tiếng anh miễn phí-học tiếng anh cơ bản-học tiếng anh online-tài liệu học tiếng anh Unit01. Từ loại
Unit02. Nouns and Ariticles (Danh từ,mạo từ)
Unit03. Verbs and sentences (Động từ và câu)
Unit04. Pronouns ( Đại từ)
Unit05. Simple present(Thì hiện tại đơn)
Unit06. Adjectives (Tính từ)
Unit07. Numbers (Số)
Unit08. Possessive Case ( Sở hữu cách)
Unit09. Possessive Adjectives (Tính từ sở hữu)
Unit10. Possessive pronouns (Đại từ sở hữu)
Unit11. There is, there are, how many, how much, to have
Unit12. Infinitive (Dạng nguyên thể)
Unit13. Object (Túc từ)
Unit14. Adverbs (Trạng từ)
Unit15. Can, May, Be able to
Unit16. Present continuous(Hiện tại tiếp diễn)

Unit17. Questions (Câu hỏi)
Unit18. Imperative mood (Mệnh lệnh cách)
Unit19. Future Tense (Thì tương lai)
Unit20. Date and time (Ngày tháng và thời gian)
Unit21. Past simple (Thì quá khứ đơn)
Unit22. My own (Của riêng tôi)
Unit23. Prepositions (Giới từ)
Unit24. So sánh của tính từ và trạng từ
Unit25. Perfect Tenses (Thì hoàn thành)
Unit26. Question tags (Câu hỏi đuôi)
Unit27. Passive Voice ( Thể bị động)
Unit28. Relative Clauses (Mệnh đề quan hệ)
Unit29. -ing and -ed + Clauses
Unit30. Gerunds (Danh động từ)
Unit31. Continuous Tenses (Thể tiếp diễn)
Unit32. Reported Speech (Câu tường thuật)
Unit33. Also, too
Unit34. Nouns (Danh từ)
Unit35. Personal Pronouns (Đại từ nhân xưng)
Unit36. Relative pronouns ( Đại từ quan hệ )
Unit37. Indefinite and demonstrative pronouns
Unit38. Subjunctive mood (Thể bàng cách)
Unit39. Auxiliary Verbs (Trợ động từ)
Unit40. Model Verbs (Động từ khuyết thiếu)
Unit41. Prefixes and Suffixes (Tiền tố và hậu tố)

Thử Thách: Đọc hiểu Web tiếng Anh của bạn ?%

50 Điểm Ngữ Pháp Thông Dụng

học tiếng anh trực tuyến-học tiếng anh giao tiếp-tieng anh online mien phi-phương pháp học tiếng anh-học tiếng anh miễn phí-học tiếng anh cơ bản-học tiếng anh online-tài liệu học tiếng anh Unit 1. Present continuous
Unit 2: Present simple
Unit 3. Present continuous,present simple (1)
Unit 4. Present continuous, present simple (2)
Unit 5. Past simple
Unit 6. Past continuous
Unit 7. Present perfect (1)
Unit 8. Present perfect (2)
Unit 9. Present perfect continuous
Unit 10. Present perfect continuous and simple
Unit 11. How long have you been ?
Unit 12 When? How long? For and Since
Unit 13. Present perfect and past (1)
Unit 14. Present perfect and past (2)
Unit 15. Past perfect
Unit 16. Past Perfect continous
Unit 17. Have and have got
Unit 18. Use to (do)
Unit 19. Present tenses for the future
Unit 20. I am going to do
Unit 21. Will/shall (1)
Unit 22. Will/shall (2)
Unit 23. I will and I am going to do
Unit 24. Will be doing and will have done
Unit 25.When I have done. When and If

Unit 26. Can, could and be able to
Unit 27. Could do and could have done
Unit 28. Must and can’t
Unit 29. May and might (1)
Unit 30. May and might (2)
Unit 31. Must and have to
Unit 32. Must, musn’t, needn’t
Unit 33. Should (1)
Unit 34. Should (2)
Unit 35. Had better. It’s time …
Unit 36. Can/Could/Would you …?
Unit 37. If I do … and If I did…
Unit 38. If I knew… I wish I new
Unit 39. If I had known… I wish I had known
Unit 40. Would. I wish … would
Unit 41. Passive (1)
Unit 42. Passive (2)
Unit 43. Passive (3)
Unit 44.He is said ..(be) supposed to
Unit 45. Have something done
Unit 46. Report Speech (1)
Unit 47. Reported Speech (2)
Unit 48. Question (1)
Unit 49. Question (2)
Unit 50. Auxiliary Verbs

Top posters

viethack911 (1150)
Lập trình OOP-Bài tập tăng giảm n ngày Bar_leftLập trình OOP-Bài tập tăng giảm n ngày BarLập trình OOP-Bài tập tăng giảm n ngày Bar_right 
Lonely_star (1092)
Lập trình OOP-Bài tập tăng giảm n ngày Bar_leftLập trình OOP-Bài tập tăng giảm n ngày BarLập trình OOP-Bài tập tăng giảm n ngày Bar_right 
dangthaison (956)
Lập trình OOP-Bài tập tăng giảm n ngày Bar_leftLập trình OOP-Bài tập tăng giảm n ngày BarLập trình OOP-Bài tập tăng giảm n ngày Bar_right 
admin (767)
Lập trình OOP-Bài tập tăng giảm n ngày Bar_leftLập trình OOP-Bài tập tăng giảm n ngày BarLập trình OOP-Bài tập tăng giảm n ngày Bar_right 
Son Iglesias (577)
Lập trình OOP-Bài tập tăng giảm n ngày Bar_leftLập trình OOP-Bài tập tăng giảm n ngày BarLập trình OOP-Bài tập tăng giảm n ngày Bar_right 
bach hai duong (548)
Lập trình OOP-Bài tập tăng giảm n ngày Bar_leftLập trình OOP-Bài tập tăng giảm n ngày BarLập trình OOP-Bài tập tăng giảm n ngày Bar_right 
tdat00 (484)
Lập trình OOP-Bài tập tăng giảm n ngày Bar_leftLập trình OOP-Bài tập tăng giảm n ngày BarLập trình OOP-Bài tập tăng giảm n ngày Bar_right 
dunguyen_th2 (439)
Lập trình OOP-Bài tập tăng giảm n ngày Bar_leftLập trình OOP-Bài tập tăng giảm n ngày BarLập trình OOP-Bài tập tăng giảm n ngày Bar_right 
gacon (408)
Lập trình OOP-Bài tập tăng giảm n ngày Bar_leftLập trình OOP-Bài tập tăng giảm n ngày BarLập trình OOP-Bài tập tăng giảm n ngày Bar_right 
bebomb0708 (392)
Lập trình OOP-Bài tập tăng giảm n ngày Bar_leftLập trình OOP-Bài tập tăng giảm n ngày BarLập trình OOP-Bài tập tăng giảm n ngày Bar_right 

Latest topics

» Ngày: 23-12
by admin Fri Nov 30, 2012 11:53 am

» CÁC BỐ, CÁC MẸ GIÚP MÌNH VỚI
by gatrantruong01 Thu Nov 15, 2012 12:22 am

» lớp 6 Đề cương ôn tập lớp 6
by admin Wed Nov 07, 2012 6:13 pm

» 3 ứng dụng học tiếng Anh cực hay trên "dế yêu"
by admin Sat Nov 03, 2012 10:30 am

» Từ vụng cơ bản tiếng anh, 3000 từ vựng nhà xuất bản giáo dục
by admin Sat Nov 03, 2012 10:22 am

» Những cụm từ thông dụng trong tiếng Anh giao tiếp
by admin Sat Nov 03, 2012 9:15 am

» Giao tiếp Choosing a movie- chọn 1 bộ hphim
by admin Wed Oct 31, 2012 4:45 pm

» Giao tiếp căn bản At the restaurant-tại khách sạn
by admin Wed Oct 31, 2012 4:42 pm

» Giao tiếp What a coincidence=trùng hợp làm sao
by admin Wed Oct 31, 2012 4:40 pm

» Học tiếng anh giao tiếp Making a date -Đặt cuộc hẹn
by admin Wed Oct 31, 2012 4:38 pm

Forum Statitics


4 posters

    Lập trình OOP-Bài tập tăng giảm n ngày

    zero
    zero
    Mod
    Mod


    Nam Tổng số bài gửi : 247
    Age : 34
    Location : wisky549@yahoo.com
    Điểm bài viết : 32
    Registration date : 14/03/2009

    Lập trình OOP-Bài tập tăng giảm n ngày Empty Lập trình OOP-Bài tập tăng giảm n ngày

    Bài gửi by zero Sun Jan 31, 2010 10:53 pm

    Đây là đoạn code em làm, có j sai sót các bác coi dùm
    Code:

    class NgayThang
        {
            private int ngay;
            private int thang;
            private int nam;

            //Hàm khởi tạo
            public NgayThang()
            {
                nam = 1900;
                thang = 1;
                ngay = 1;
            }

            //Khởi tạo có tham sô
            public NgayThang(int pNam, int pThang, int pNgay)
            {
                Nam = pNam;
                Thang = pThang;
                Ngay = pNgay;
            }

            public int Nam
            {
                set
                {
                    if (value > 1900) nam = value;
                    else throw new Exception("Nam ban nhap phai lon hon 1900\n\n");
                }
                get
                {
                    return nam;
                }
            }
            public int Thang
            {
                set
                {
                    if (value <= 12 && value >= 1) thang = value;
                    else throw new Exception("Thang ban nhap phai tu 1 -> 12.\n\n");
                }
                get
                {
                    return thang;
                }
            }
            public int Ngay
            {
                set
                {
                    if (value >= 1 && value <= SoNgayCuaThang(thang)) ngay = value;
                    else throw new Exception(String.Format("Nam {0}, thang {1}, ngay ban nhap phai tu 1 ->{2}", nam, thang, SoNgayCuaThang(thang)));
                }
                get
                {
                    return ngay;
                }
            }

            //Ham xac dinh co phai Nam nhuan hay khong.
            private bool NamNhuan(int pNam)
            {
                if (pNam % 400 == 0) return true;
                else return (pNam % 100 != 0) & (pNam % 4 == 0);
            }

            //Ham xac dinh so ngay cua mot thang.
            public int SoNgayCuaThang(int pThang)
            {
                int[] dayOf = new int[] { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
                if (NamNhuan(nam)) dayOf[2] = 29;
                return dayOf[pThang];
            }

            //Hàm tăng n ngày:
            public void Tang(int pSoNgayTang)
            {
                //Tăng ngày lên mà chưa bị tràn qua tháng khác.
                if (!VuotNgay(pSoNgayTang, "Tang")) ngay = ngay + pSoNgayTang;
                //Tăng ngày lên và bị tràn qua tháng khác. VD:đang ngày 30, tăng 3->sang tháng khác.
                else
                {
                    //Tháng tăng lên nhưng chưa bị tràn qua năm khác.
                    if (!VuotThang("Tang"))
                    {
                        pSoNgayTang = pSoNgayTang + ngay - SoNgayCuaThang(thang);
                        thang++;
                        ngay = 0;
                        Tang(pSoNgayTang);
                    }
                    //Tháng tăng lên và bị tràn qua năm khác. VD: đang 31/12/2009, tăng 2 ngày-> 2/1/2001.
                    else
                    {
                        pSoNgayTang = pSoNgayTang + ngay - SoNgayCuaThang(thang);
                        nam++;
                        ngay = 0;
                        thang = 1;
                        Tang(pSoNgayTang);
                    }
                }
            }

            //Hàm giảm n ngày (Tương tự như tăng):
            public void Giam(int pSoNgayGiam)
            {
                if (!VuotNgay(pSoNgayGiam, "Giam"))
                {
                    ngay = ngay - pSoNgayGiam;
                }
                else
                {
                    if (!VuotThang("Giam"))
                    {
                        pSoNgayGiam = pSoNgayGiam - ngay;
                        thang--;
                        ngay = SoNgayCuaThang(thang);
                        Giam(pSoNgayGiam);
                    }
                    else
                    {
                        pSoNgayGiam = pSoNgayGiam - ngay;
                        nam--;
                        ngay = SoNgayCuaThang(thang);
                        thang = 12;
                        Giam(pSoNgayGiam);
                    }
                }
            }

            //Khi bị vượt tràn ngày qua tháng khác, xác định xem có bị tràn lun tháng qua năm không:
            private bool VuotThang(string tangHayGiam)
            {
                //Với hàm tăng, đang ở tháng 12 nếu tràn ngày sẽ tràn tháng, và ảnh hưởng tới năm.
                if (tangHayGiam == "Tang") return (thang == 12);
                //Với hàm giảm, đang ở tháng 1 nếu giảm ngày xuống liên quan tới giảm tháng nữa thì sẽ ảnh hưởng tới năm.
                else return (thang == 1);
            }

            //Xác định ngày được tăng lên có bị vượt quá ngày đó của tháng hay không
            //"Tang" nếu dùng hàm để xác định tăng, và "Giam" nếu để xác định giảm.
            private bool VuotNgay(int pSoNgay, string tangHayGiam)
            {
                if (tangHayGiam == "Tang") return (pSoNgay + ngay > SoNgayCuaThang(thang));
                else return (pSoNgay >= ngay);
            }
        }

    Còn đây là trong voidMain()
    Code:

    class Program
        {
            static void Main(string[] args)
            {
                NgayThang thu1 = new NgayThang(2009, 12, 31);
                Console.WriteLine("{0}/{1}/{2}", thu1.Ngay, thu1.Thang, thu1.Nam);
                int ngaytang = 2;
                thu1.Tang(ngaytang);
                Console.Write("Tang {0} ngay thi :{1}/{2}/{3}\n", ngaytang, thu1.Ngay, thu1.Thang, thu1.Nam);
                thu1.Giam(ngaytang);
                Console.Write("Giam {0} ngay thi :{1}/{2}/{3}", ngaytang, thu1.Ngay, thu1.Thang, thu1.Nam);
                Console.ReadLine();
            }
        }
    avatar
    tdat00
    Mod
    Mod


    Nam Tổng số bài gửi : 484
    Age : 35
    Location : %systemroot%
    Điểm bài viết : 41
    Registration date : 12/03/2009

    Lập trình OOP-Bài tập tăng giảm n ngày Empty Re: Lập trình OOP-Bài tập tăng giảm n ngày

    Bài gửi by tdat00 Mon Feb 01, 2010 12:01 am

    Đoạn này:

    Code:

            //Hàm khởi tạo
            public NgayThang()
            {
                nam = 1900;
                thang = 1;
                ngay = 1;
            }

    với đoạn này:

    Code:

            public int Nam
            {
                set
                {
                    if (value > 1900) nam = value;
                    else throw new Exception("Nam ban nhap phai lon hon 1900\n\n");
                }

    em thấy hơi bị "chỏi" nhau ở cái năm 1900 đấy bác. Đoạn dưới nhập vào năm 1900 thì Exception mà đoạn trên mặc định thì 1900 cyclops

    Cũng tương tự như thế, nhập vào ngày 1/1/1901 rồi xài hàm giảm để giảm đi bớt 3 ngày --> thành ngày 29/12/1900 --> nếu xài 1 biến NgayThang khác để copy các giá trị này sẽ tạo Exception --> vô lý.

    Rgd.
    avatar
    tdat00
    Mod
    Mod


    Nam Tổng số bài gửi : 484
    Age : 35
    Location : %systemroot%
    Điểm bài viết : 41
    Registration date : 12/03/2009

    Lập trình OOP-Bài tập tăng giảm n ngày Empty Re: Lập trình OOP-Bài tập tăng giảm n ngày

    Bài gửi by tdat00 Thu Feb 04, 2010 12:09 am

    Phù, giờ mới làm xong. Giờ phải chép ra giấy sao affraid



    Project: http://megashare.vn/dl.php/187713



    Class NgayThang.cs:
    Code:
        using System;

        class NgayThang
        {
            Exception LOI_NGAY_THANG = new Exception("Thời gian không phù hợp");
            Exception LOI_THAY_DOI_NGAY_THANG = new Exception("Không thể thay đổi thời gian");
            Exception LOI_GIA_TRI_NHAP_VAO = new Exception("Giá trị nhập vào không phù hợp");

            private int priNgay, priThang, priNam;
            const int NAM_NHO_NHAT = 1900; // không nhận các năm nhỏ hơn NamNhoNhat
            const int NAM_LON_NHAT = 2500; //                hoặc lớn hơn NamLonNhat

            public enum KieuXuatRa
            {
                Ngay_Thang_Nam,
                Thang_Ngay_Nam
            }

            public NgayThang(NgayThang paraNgayThang)
            {
                Nam = paraNgayThang.Nam;
                Thang = paraNgayThang.Thang;
                Ngay = paraNgayThang.Ngay;
            }

            public NgayThang(int paraNgay, int paraThang, int paraNam)
            {
                Nam = paraNam;
                Thang = paraThang;
                Ngay = paraNgay;
            }

            public int Nam
            {
                get { return priNam; }
                set
                {
                    // nếu năm nhập vào không nằm trong khoảng cho phép
                    if (value < NAM_NHO_NHAT || value > NAM_LON_NHAT)
                        throw LOI_NGAY_THANG;

                    priNam = value;
                }
            }

            public int Thang
            {
                get { return priThang; }
                set
                {
                    if (value < 1 || value > 12)
                        throw LOI_NGAY_THANG;

                    priThang = value;
                }
            }

            public int Ngay
            {
                get { return priNgay; }
                set
                {
                    if ((value < 1) || (value > NgayTrongThang(Thang, Nam)))
                        throw LOI_NGAY_THANG;

                    priNgay = value;
                }
            }

            // hàm lấy số ngày trong tháng bất kì
            // dùng private để chắc chắc dữ liệu nhập vào không bị lỗi
            private int NgayTrongThang(int paraThang, int paraNam)
            {
                int[] arrSoNgay = { -1, 31, -1, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

                if (paraThang != 2) // nếu không phải tháng 2
                    return arrSoNgay[paraThang];

                if (NamNhuan(paraNam)) // nếu là tháng 2 của năm nhuận
                    return 29;

                return 28; // nếu không là tháng 2 của năm nhuận
            }

            // property xác định số ngày trong tháng của biến hiện tại
            // dùng public để người sử dụng có thể check
            // không sợ dữ liệu nhập vào bị lỗi vì đã qua kiểm tra
            public int SoNgayTrongThang
            {
                get { return NgayTrongThang(Thang, Nam); }
            }

            // hàm kiểm tra 1 năm có phải là năm nhuận
            // dùng private để chắc chắn dữ liệu nhập vào không bị lỗi
            private bool NamNhuan(int paraNam)
            {
                if (paraNam % 400 == 0)
                    return true;

                if ((paraNam % 4 == 0) && (paraNam % 100 != 0))
                    return true;

                return false;
            }

            // property xác định năm của biến hiện tại có phải là năm nhuận
            // dùng public để người sử dụng có thể check
            // không sợ dữ liệu nhập vào bị lỗi vì đã qua kiểm tra
            public bool LaNamNhuan
            {
                get { return NamNhuan(Nam); }
            }

            // hàm xuất giá trị ra chuỗi
            public string XuatRa(KieuXuatRa Type)
            {
                string result = "";

                switch (Type)
                {
                    case KieuXuatRa.Ngay_Thang_Nam:
                        result = Ngay + "/" + Thang + "/" + Nam;
                        break;
                    default: // KieuXuatRa.Thang_Ngay_Nam
                        result = Thang + "/" + Ngay + "/" + Nam;
                        break;
                }

                return result;
            }


            // hàm tăng biến hiện tại thêm value ngày
            public void Tang(int value)
            {
                if (value < 0) // báo lỗi khi nhập vào 1 giá trị âm
                    throw LOI_GIA_TRI_NHAP_VAO;

                int NgayMoi = Ngay, ThangMoi = Thang, NamMoi = Nam;

                ThayDoiNgay(value, ref NgayMoi, ref ThangMoi, ref NamMoi, false);

                Ngay = NgayMoi; Thang = ThangMoi; Nam = NamMoi;
            }

            // hàm giảm biến hiện tại bớt value ngày
            public void Giam(int value)
            {
                if (value < 0) // báo lỗi khi nhập vào 1 giá trị âm
                    throw LOI_GIA_TRI_NHAP_VAO;

                int NgayMoi = Ngay, ThangMoi = Thang, NamMoi = Nam;

                ThayDoiNgay(value, ref NgayMoi, ref ThangMoi, ref NamMoi, true);

                Ngay = NgayMoi; Thang = ThangMoi; Nam = NamMoi;
            }

            // hàm tăng/giảm paraNgay value ngày
            // nếu sau khi tăng/giảm sẽ qua tháng khác --> tăng/giảm paraThang
            // dùng private để đảm bảo value luôn dương
            // bGiam == true --> Giảm
            private void ThayDoiNgay(int value, ref int paraNgay, ref int paraThang, ref int paraNam, bool bGiam)
            {
                if (bGiam)
                {
                    paraNgay = paraNgay - value;
                    while (paraNgay < 1) // lặp đến khi không giảm paraThang nữa
                    {
                        ThayDoiThang(1, ref paraThang, ref paraNam, bGiam); // giảm paraThang 1 đơn vị
                        paraNgay = NgayTrongThang(paraThang, paraNam) - (-paraNgay);
                    }
                }
                else
                {
                    paraNgay = paraNgay + value;
                    while (paraNgay > NgayTrongThang(paraThang, paraNam))
                    {
                        paraNgay = paraNgay - NgayTrongThang(paraThang, paraNam);
                        ThayDoiThang(1, ref paraThang, ref paraNam, bGiam); // tăng paraThang 1 đơn vị
                    }
                }
            }

            // hàm tăng/giảm paraThang value tháng
            // nếu sau khi tăng/giảm sẽ qua năm khác --> tăng/giảm paraNam
            // dùng private để đảm bảo value luôn dương
            // bGiam == true --> Giảm
            private void ThayDoiThang(int value, ref int paraThang, ref int paraNam, bool bGiam)
            {
                int SoNamThayDoi = value / 12; // ứng với mỗi 12 tháng, ta tăng/giảm paraNam 1 đơn vị
                ThayDoiNam(SoNamThayDoi, ref paraNam, bGiam); // tăng/giảm paraNam

                value = value % 12; // tính lại value khi đã cập nhật paraNam
                // lúc này value luôn < 12

                if (value == 0) return; // nếu không còn dư value, thoát khỏi hàm

                // tiếp tục tăng/giảm lượng value còn dư
                if (bGiam)
                {
                    if (paraThang - value < 1) // nếu sau khi giảm sẽ lùi về năm trước
                    {
                        ThayDoiNam(1, ref paraNam, bGiam); // giảm paraNam 1 đơn vị
                        paraThang = 12 - (-(paraThang - value)); // cập nhật paraThang sau khi đã giảm paraNam
                    }
                    else
                        paraThang = paraThang - value;
                }
                else
                {
                    if (paraThang + value > 12) // nếu sau khi tăng sẽ tiến qua năm mới
                    {
                        ThayDoiNam(1, ref paraNam, bGiam); // tăng paraNam 1 đơn vị
                        paraThang = (paraThang + value) - 12;
                    }
                    else
                        paraThang = paraThang + value;
                }
            }


            // hàm tăng/giảm paraNam value năm
            // dùng private để đảm bảo value luôn dương
            // bGiam == true --> Giảm
            private void ThayDoiNam(int value, ref int paraNam, bool bGiam)
            {
                int NamMoi = (bGiam) ? (paraNam - value) : (paraNam + value);

                if (NamMoi < NAM_NHO_NHAT || NamMoi > NAM_LON_NHAT)
                    throw LOI_THAY_DOI_NGAY_THANG;

                paraNam = NamMoi;
            }
        }



    Class Test.cs:
    Code:
        using System;

        class Test
        {
            static void Main(string[] args)
            {
                try
                {
                    NgayThang nt = new NgayThang(14, 2, 2010); // valentine + tết ^^
                    NgayThang nt2 = new NgayThang(nt);

                    int SoNgayCuaThang = nt.SoNgayTrongThang; // số ngày của tháng này
                    Console.WriteLine(SoNgayCuaThang);

                    int SoNgayNamNay = (nt.LaNamNhuan) ? 366 : 365; // số ngày của năm nay
                    Console.WriteLine(SoNgayNamNay);

                    nt.Giam(123); // giảm 123 ngày
                    Console.WriteLine(nt.XuatRa(NgayThang.KieuXuatRa.Thang_Ngay_Nam));

                    nt2.Tang(1234); // tăng 1234 ngày
                    Console.WriteLine(nt2.XuatRa(NgayThang.KieuXuatRa.Thang_Ngay_Nam));


                    Console.WriteLine("\r\nThử lại độ chính xác với hàm thư viện của C#\r\n");

                    DateTime dt = new DateTime(2010, 2, 14);
                    DateTime dt2 = new DateTime(2010, 2, 14);

                    dt = dt.AddDays(-123); // giảm 123 ngày
                    Console.WriteLine(dt.ToShortDateString());

                    dt2 = dt2.AddDays(1234); // tăng 1234 ngày
                    Console.WriteLine(dt2.ToShortDateString());


                    Console.WriteLine("\r\nYeah! Giờ thử với lỗi\r\n");

                    NgayThang test2 = new NgayThang(1, 1, 1900); // không có lỗi
                    http://test2.Giam(123); // sẽ có lỗi

                    Console.WriteLine("\r\nOK!");
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                }

                Console.ReadLine();
            }
        }
    zero
    zero
    Mod
    Mod


    Nam Tổng số bài gửi : 247
    Age : 34
    Location : wisky549@yahoo.com
    Điểm bài viết : 32
    Registration date : 14/03/2009

    Lập trình OOP-Bài tập tăng giảm n ngày Empty Re: Lập trình OOP-Bài tập tăng giảm n ngày

    Bài gửi by zero Thu Feb 04, 2010 12:31 am

    Em làm lại cái của em, tắt tắt tý, hi hi.Mấy cái kia cũng giống giống cái phía trên nên không viết lại, chỉ viết cái hàm tăng giảm zô đây thui hen:
    Code:

            //Cách 1:
            public void TangNgay(int soNgayTang)
            {
                if (ngay + soNgayTang <= SoNgay(thang)) ngay += soNgayTang;
                else
                {
                    soNgayTang = soNgayTang - (SoNgay(thang) - ngay);
                    if (thang != 12) thang++;
                    else
                    {
                        nam++;
                        thang = 1;
                    }
                    ngay = 0;
                    TangNgay(soNgayTang);
                }
            }
            public void GiamNgay(int soNgayGiam)
            {
                if (ngay - soNgayGiam > 0) ngay -= soNgayGiam;
                else
                {
                    if (thang != 1) thang--;
                    else
                    {
                        nam--;
                        thang = 12;
                    }
                    soNgayGiam -= ngay;
                    ngay = SoNgay(thang);
                    GiamNgay(soNgayGiam);
                }
            }
    Với các hàm nhỏ trong đó:
    Code:

            private int SoNgay(int pThang)
            {
                int[] SoNgayCuaThang = new int[] { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
                if (LaNamNhuan) SoNgayCuaThang[2] = 29;
                return SoNgayCuaThang[pThang];
            }
            private bool LaNamNhuan
            {
                get
                {
                    if (nam % 400 == 0) return true;
                    else return (nam % 100 != 0) && (nam % 4 == 0);
                }
            }
    zero
    zero
    Mod
    Mod


    Nam Tổng số bài gửi : 247
    Age : 34
    Location : wisky549@yahoo.com
    Điểm bài viết : 32
    Registration date : 14/03/2009

    Lập trình OOP-Bài tập tăng giảm n ngày Empty Re: Lập trình OOP-Bài tập tăng giảm n ngày

    Bài gửi by zero Thu Feb 04, 2010 12:43 am

    Hix, quên post cách 2. Cách này thì dễ hình dung hơn, mà có khi viết khoẻ re hơn, đơn giản. Very Happy . Tình hình là mình viết hàm cho nó tăng một ngày trước, rùi viết thêm hàm tăng n ngày, trong hàm tăng n ngày mình cho chạy n lần hàm tăng 1 ngày là ok thui. Rất zui Very Happy:
    Code:

    //Cách 2:
            public void TangMotNgay()
            {
                if (ngay == SoNgay(thang))
                {
                    if (thang != 12)
                    {
                        thang++;
                        ngay = 1;
                    }
                    else
                    {
                        thang = 1;
                        ngay = 1;
                        nam++;
                    }
                }
                else ngay++;
            }
            public void TangVaiNgay(int soNgayTang)
            {
                while (soNgayTang > 0)
                {
                    TangMotNgay();
                    soNgayTang--;
                }
            }
            public void GiamMotNgay()
            {
                if (ngay == 1)
                {
                    if (thang != 1)
                    {
                        thang--;
                        ngay = SoNgay(thang);
                    }
                    else
                    {
                        nam--;
                        thang = 12;
                        ngay = 31;
                    }
                }
                else ngay--;
            }
            public void GiamVaiNgay(int soNgayGiam)
            {
                while (soNgayGiam > 0)
                {
                    GiamMotNgay();
                    soNgayGiam--;
                }
            }
    Lonely_star
    Lonely_star
    Thành viên VIP
    Thành viên VIP


    Nam Tổng số bài gửi : 1092
    Age : 36
    Location : Quảng Ngãi
    Điểm bài viết : 5
    Registration date : 19/03/2009

    Lập trình OOP-Bài tập tăng giảm n ngày Empty Re: Lập trình OOP-Bài tập tăng giảm n ngày

    Bài gửi by Lonely_star Thu Feb 04, 2010 12:51 am

    Thank Phong nha!
    avatar
    sathubongdem
    thành viên mới
    thành viên mới


    Tổng số bài gửi : 6
    Điểm bài viết : 0
    Registration date : 03/02/2010

    Lập trình OOP-Bài tập tăng giảm n ngày Empty Re: Lập trình OOP-Bài tập tăng giảm n ngày

    Bài gửi by sathubongdem Thu Feb 04, 2010 8:42 am

    Code:

    using System;
    using System.Collections.Generic;
    using System.Text;

    namespace tanggiamngay
    {
        class date
        {
            private int nam;
            private int thang;
            private int ngay;
            public int nhapnam()
            {
                nam = 0;
                do
                {
                    Console.WriteLine("nhap nam");
                    nam = Int16.Parse(Console.ReadLine());
                }
                while (nam < 1990);
                return nam;
            }

            public int nhapthang()
            {
                thang = 0;
                do
                {
                    Console.WriteLine("nhap thang");
                    thang = Int16.Parse(Console.ReadLine());
                }
                while (thang > 12 || thang < 0);
                return thang;
            }
            public int kiemtra()
            {
                int namnhuan = 0;
                if ((nam % 4 == 0 || nam % 400 == 0) && nam % 100 != 0)
                {
                    namnhuan = 1;
                }
                else
                    namnhuan = 0;
                return namnhuan;
            }
            public int ngaylonnhat(int thang)
            {
                int ngaymax = 0;
                if (thang == 4 || thang == 6 || thang == 9 || thang == 11 )
                      ngaymax=30;
                    if (thang == 2)
                    {
                        if (kiemtra() == 1)
                            ngaymax = 29;
                        else
                            ngaymax = 28;
                    }
                    if (thang == 1 || thang == 3 || thang == 5 || thang == 7 || thang == 8 || thang == 10 || thang == 12)
                        ngaymax = 31;
                return ngaymax;
            }

            public int nhapngay()
            {
                int ngaymax = ngaylonnhat(thang);
                while (ngay > ngaymax || ngay < 1)
               
                {
                    Console.WriteLine("nhap ngay");
                    ngay = Int16.Parse(Console.ReadLine());
                }
             
                return ngay;
            }
            public void hienthi()
            {
                Console.WriteLine("ngay ma ban vua nhap vao la: {0}/{1}/{2}", ngay, thang, nam);
            }

            public void tangngay()
            {
                ngay = ngay + 1;
       
                if (ngay > ngaylonnhat(thang))
                {
                    thang = thang + 1;
                    ngay =1;
                    if (thang > 12)
                    {
                        nam++;
                        thang = 1;
                    }
                   
                }
                Console.WriteLine("ngay sau khi tang len ngay la:{0}/{1}/{2}", ngay, thang, nam);
                }
        public void giamngay()
            {
                ngay = ngay - 1;
                if (ngay < 1)
                {
                    ngay = ngaylonnhat(thang--);
                    thang = thang - 1;
                    if (thang < 1)
                    {
                        nam = nam - 1;
                        thang = 12;
                    }
                }
               
             
    Console.WriteLine("ngay sau khi da giam di 1 ngay: {0}/{1}/{2}", ngay, thang, nam);

            }
         

        }
    }
    static void Main(string[] args)
          {
              date a = new date();
                int nam=a.nhapnam();
                int thang =a.nhapthang();
                int ngay =a.nhapngay();
                Console.Clear();
              a.hienthi();
              a.tangngay();
              a.giamngay();
             
             
                Console.ReadLine();
            }
        }
    }
    tui sua lai roi nay nhung con sai sot mong cac bac chi dum nha de tui con sua lai nhe ma tui ko duc vao code dc


    Được sửa bởi sathubongdem ngày Mon Feb 08, 2010 4:53 pm; sửa lần 4. (Reason for editing : add Code Tag)
    avatar
    tdat00
    Mod
    Mod


    Nam Tổng số bài gửi : 484
    Age : 35
    Location : %systemroot%
    Điểm bài viết : 41
    Registration date : 12/03/2009

    Lập trình OOP-Bài tập tăng giảm n ngày Empty Re: Lập trình OOP-Bài tập tăng giảm n ngày

    Bài gửi by tdat00 Thu Feb 04, 2010 10:19 am

    sathubongdem đã viết:day la em viet theo kieu co dien do cac bac tham khao nha!

    OK, chắc bác quên 1 cái else trong hàm ngaylonnhat.

    Sau này nhớ gõ tiếng Việt và đưa code vào thẻ Code nhé.

    Rgd.
    avatar
    sathubongdem
    thành viên mới
    thành viên mới


    Tổng số bài gửi : 6
    Điểm bài viết : 0
    Registration date : 03/02/2010

    Lập trình OOP-Bài tập tăng giảm n ngày Empty Re: Lập trình OOP-Bài tập tăng giảm n ngày

    Bài gửi by sathubongdem Thu Feb 04, 2010 6:41 pm

    uh cam on dat nha tui lan dau tap tanh viet thui ma hjhj ma lam sao dua vao code vay?
    chi dum di nhe
    avatar
    tdat00
    Mod
    Mod


    Nam Tổng số bài gửi : 484
    Age : 35
    Location : %systemroot%
    Điểm bài viết : 41
    Registration date : 12/03/2009

    Lập trình OOP-Bài tập tăng giảm n ngày Empty Re: Lập trình OOP-Bài tập tăng giảm n ngày

    Bài gửi by tdat00 Thu Feb 04, 2010 8:32 pm

    thì cứ copy đoạn code của bác vào giữa 2 thẻ [code][/code] thôi. Như thế này nè:

    [code]
    private void abc()
    {
    // ...
    }

    [/code]

    Have fun
    avatar
    sathubongdem
    thành viên mới
    thành viên mới


    Tổng số bài gửi : 6
    Điểm bài viết : 0
    Registration date : 03/02/2010

    Lập trình OOP-Bài tập tăng giảm n ngày Empty Re: Lập trình OOP-Bài tập tăng giảm n ngày

    Bài gửi by sathubongdem Fri Mar 05, 2010 12:09 pm

    hom qua hoc xong em moi hieu ve cai phan nay nen em thu lam lai ve tang ngay thang ma moi den day da thay sai roi mong cac bac sua va cho em biet la sai cho nao vay? cam on cac bac nha
    Code:
     using System;
    using System.Collections.Generic;
    using System.Text;

    namespace tanggiamngayget
    {
        class date
        {
            int ngay;
            int thang;
            int nam;
            public int Thang
            {
                set
                {
                    if (value >= 1 && value <= 12)
                        thang = value;
                    else
                        Console.WriteLine("thang ban vua nhap khong hop le");
                }
                get
                {
                    return thang;
                }
            }
            public  int Ngay
            {
                get
                {
                    return ngay;
                }
                set
                {
               
                    if (value <= ngaymax(thang) && value >= 1)
                        ngay = value;
                    else
                        Console.WriteLine("ngay ban vua nhap ko hop le");
                }
             
        }
         
            public int Nam
            {
                set
                {
                    if (value > 1900)
                        nam = value;
                    else
                        Console.WriteLine("nam ban nhap khong hop le");
                }
                get
                {
                    return nam;
                }
            }
            public bool namnhuan(int nam)
            {
                if ((nam % 4 == 0 && nam % 100 != 0) || nam % 400 == 0)
                    return true;
                else return false;
            }
            public int ngaymax(int thang)
            {
                int[]a=new int[]{0,31,28,31,30,31,30,31,31,30,31,30,31};
                if ((namnhuan(nam) == true)&&thang==2)
                    a[2] = 29;
                return a[thang];
            }
            public date()
            {
                ngay = 5;
                thang = 1;
                nam = 1900;
            }
            public date(int ng, int th, int na)
            {
                Ngay = ng;
                Thang = th;
                Nam = na;
            }

        }
    }
    static void Main(string[] args)
            {
                date aa = new date(25, 5, 2009);
                Console.WriteLine("{0}/{1}/{2}", aa.Ngay, aa.Thang, aa.Nam);
                Console.ReadLine();
            }
    avatar
    tdat00
    Mod
    Mod


    Nam Tổng số bài gửi : 484
    Age : 35
    Location : %systemroot%
    Điểm bài viết : 41
    Registration date : 12/03/2009

    Lập trình OOP-Bài tập tăng giảm n ngày Empty Re: Lập trình OOP-Bài tập tăng giảm n ngày

    Bài gửi by tdat00 Fri Mar 05, 2010 2:26 pm

    sathubongdem đã viết:hom qua hoc xong em moi hieu ve cai phan nay nen em thu lam lai ve tang ngay thang ma moi den day da thay sai roi mong cac bac sua va cho em biet la sai cho nao vay? cam on cac bac nha

    nguyên nhân do đoạn này bác ko đặt đúng thứ tự:

    Code:

            public date(int ng, int th, int na)
            {
                Ngay = ng;
                Thang = th;
                Nam = na;
            }

    nếu code như bác, trình biên dịch sẽ nạp ng vào Ngay trước --> chạy lên đoạn này:

    Code:
    public int Ngay
            {
                set
                {

                    if (value <= ngaymax(thang) && value >= 1) // chạy lên ngay chỗ này!
                        ngay = value;
                    else
                        Console.WriteLine("ngay ban vua nhap ko hop le");
                }

            }

    đến đây thì lỗi xuất hiện do thang của bác = 0 (giá trị mặc định cho biến int) ==> hàm ngaymax không làm việc được. Bác chạy debug sẽ thấy rõ.

    Để khắc phục, cần đặt đúng thứ tự từng dòng:

    Code:

            public date(int ng, int th, int na)
            {
                Nam = na;
                Thang = th;
                Ngay = ng;
            }

    Rgd.
    avatar
    sathubongdem
    thành viên mới
    thành viên mới


    Tổng số bài gửi : 6
    Điểm bài viết : 0
    Registration date : 03/02/2010

    Lập trình OOP-Bài tập tăng giảm n ngày Empty Re: Lập trình OOP-Bài tập tăng giảm n ngày

    Bài gửi by sathubongdem Sat Mar 13, 2010 9:54 am

    uh cam on bac dat de tui thu lai xem
    avatar
    sathubongdem
    thành viên mới
    thành viên mới


    Tổng số bài gửi : 6
    Điểm bài viết : 0
    Registration date : 03/02/2010

    Lập trình OOP-Bài tập tăng giảm n ngày Empty Re: Lập trình OOP-Bài tập tăng giảm n ngày

    Bài gửi by sathubongdem Sat Mar 20, 2010 3:56 pm

    các bác cho em hỏi dùng list có giống mảng không? nó có thể truy xuất 1 phần tửc bất kỳ được không? và có chèn 1 lúc nhiều phần tử được không?
    avatar
    tdat00
    Mod
    Mod


    Nam Tổng số bài gửi : 484
    Age : 35
    Location : %systemroot%
    Điểm bài viết : 41
    Registration date : 12/03/2009

    Lập trình OOP-Bài tập tăng giảm n ngày Empty Re: Lập trình OOP-Bài tập tăng giảm n ngày

    Bài gửi by tdat00 Sat Mar 20, 2010 6:41 pm

    Khai báo mảng (int[], string[]...) có ưu điểm là gọn, ít hao bộ nhớ nhưng nhược điểm thì quá trời: không thể thay đổi kích thước mảng, không có các hàm tìm kiếm, sắp xếp...

    List có ưu điểm là cho phép tăng giảm kích thước mảng tự do, hỗ trợ BinarySearch và Sort...

    Cả 2 cái đều có thể truy xuất 1 phần từ bất kì:
    Code:

    int[] xxx = int[10];
    int test = xxx[5];
    Console.WriteLine(test.ToString());

    List<int> xxy = new List<int>();
    for (int i = 0; i < 10; i++)
        xxy.Add(i);
    int test2 = xxy[5];
    Console.WriteLine(test2.ToString());

    List có thể chèn 1 mảng vào chính nó bằng hàm Insert, còn Array chỉ có thể ghi đè lên chứ không chèn vào được. Để ghi đè bác dùng Array.Copy()...

    Sponsored content


    Lập trình OOP-Bài tập tăng giảm n ngày Empty Re: Lập trình OOP-Bài tập tăng giảm n ngày

    Bài gửi by Sponsored content


      Hôm nay: Sun Sep 22, 2024 2:34 pm