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

Đề tài: Lỗi "The best overloaded method match for ... as some invalid arguments" khi sắp xếp tên bằng LIST

  1. #1
    Ngày gia nhập
    06 2012
    Nơi ở
    Hồ Chí Minh
    Bài viết
    3

    Unhappy Lỗi "The best overloaded method match for ... as some invalid arguments" khi sắp xếp tên bằng LIST

    Tình hình là ông thầy có cho bt như sau:
    Một đại lý bưu điện cần quản lý các bưu phẩm (gồm thư và hàng hóa) mà họ nhận chuyển với thư
    cần lưu: địa chỉ nhận , người nhận, loại thư(nhanh hay không). Nếu là thư thuờng thì phí vận
    chuyển là 500, nếu là thư chuyển nhanh thì phí vân chuyển là 3000. Với hàng hóa cần lưu : địa chỉ
    nhận, người nhận, trọng lượng. Phí vận chuyển bằng 10000*trọng lượng.

    Hãy xây dựng các lớp cần thiết sau đó xây dựng một số ứng dụng có các chức năng sau:
    1-Nhập xuất thông tin các loại bưu phẩm.
    2-nhập tự động 2 hàng hóa, 2 thư và gọi thao tác này trong hàm Main().
    3-Đếm tổng số hàng hóa.
    4-Xuất Thông tin tất cả các thư liên quan đến người nhận tên X.
    5-Sắp xếp các bưu phẩm theo thứ tự tăng tên người nhận. Nếu tên người nhận trùng nhau thì sắp
    xếp theo phí vận chuyển.

    6-Xóa các thông tin về thư thường.
    7-Tính tổng phí vận chuyển các loại bưu phẩm.
    Mình làm xong chỉ còn câu 5 là bí, lên mạng tìm thì có bài hướng dẫn này

    Mình bắt chước làm thì bị lỗi như tiêu đề đã nêu:



    Mình chả biết đường nào mà sửa cả, mọi ng giúp mình với....! TKS tất cả :(

    Đây là code của mình:

    Code:
    using System;
    using System.Collections.Generic; // Thư viện để gọi lệnh tạo danh sách "List"
    using System.Text;
    
    namespace Bai_01
    {
        public class BuuPham
        {
            // Khai bao cac thuoc tinh (Attributes)
            protected string strDiaChiNhan;
            protected string strNguoiNhan;
            protected double dPhiVanChuyen;
            protected int iLoaiThu;
            protected float fTrongLuong;
    
            // Khai bao cac properties
            public double PhiVanChuyen
            {
                set { dPhiVanChuyen = value; }
                get { return dPhiVanChuyen; }
            }
            public float TrongLuong
            {
                set { fTrongLuong = value; }
                get { return fTrongLuong; }
            }
            public string DiaChiNhan
            {
                set { strDiaChiNhan = value; }
                get { return strDiaChiNhan; }
            }
            public string NguoiNhan
            {
                set { strNguoiNhan = value; }
                get { return strNguoiNhan; }
            }
            public int LoaiThu
            {
                set { iLoaiThu = value; }
                get { return iLoaiThu; }
            }
    
            // Khai bao cac phuong thuc (Methods)
            public virtual double TinhPhiVanChuyen()
            {
                return dPhiVanChuyen;
            }
    
            // Khai bao cac ham (Constructor)
            public BuuPham()
            {
                strDiaChiNhan = "Chua biet";
                strNguoiNhan = "Chua biet";
                dPhiVanChuyen = 0;
                fTrongLuong = 0;
                iLoaiThu = -1;
            }
        }
        public class Thu : BuuPham
        {
            // Khai bao cac methods
            public override double TinhPhiVanChuyen()
            {
                if (iLoaiThu == 0)
                    dPhiVanChuyen = 500;
                else if (iLoaiThu == 1)
                    dPhiVanChuyen = 3000;
                return dPhiVanChuyen;
            }
        }
        public class HangHoa : BuuPham
        {
            // Khai bao cac methods
            public override double TinhPhiVanChuyen()
            {
                return (10000 * fTrongLuong);
            }
        }
        public class SoSanh : BuuPham
        {
            public int SapXep(BuuPham A, BuuPham B)
            {
                return A.NguoiNhan.CompareTo(B.NguoiNhan);
            }
        }
        public class DaiLy
        {
            static void Main(string[] args)
            {
                List<BuuPham> lstBuuPham = new List<BuuPham>();
                int iTT = 0;
                string strTemp;
                int iDemh = 0, iDemt = 0;
                double dTongPhiVanChuyen = 0;
    
    
                // ******** Nhập tự động + xuất thông tin ********
    
    
                Console.Write("Ban co muon chuong trinh nhap tu dong cac buu pham? (1 - Co / 0 - Khong): ");
                iTT = int.Parse(Console.ReadLine());
                if (iTT == 1)
                {
                    int temp;
                    // Gọi lệnh tạo số ngẫu nhiên "Random"
                    Random rd = new Random();
                    do
                    {
                        temp = rd.Next(1, 3); // Biến lấy ngẫu nhiên 1 số từ 1 đến 2
                        Console.Write("Chon loai buu pham (1 - Thu / 2 - Hang hoa): {0}", temp);
                        int iLoai = temp;
    
                        BuuPham bp = new BuuPham();
    
                        if (iLoai == 1)
                        {
                            bp = new Thu();
                            iDemt = iDemt + 1;
                            Console.Write("\nNhap ho ten nguoi nhan: Random\n");
                            bp.NguoiNhan = "Random";
                            Console.Write("Nhap dia chi nguoi nhan: Random\n");
                            bp.DiaChiNhan = "Random";
                            temp = rd.Next(2); // Biến lấy giá trị ngẫu nhiên từ 0 đến 1
                            Console.Write("Nhap loai thu (1 - Nhanh / 0 - Binh thuong): {0}\n", temp);
                            bp.LoaiThu = temp;
                            bp.PhiVanChuyen = bp.TinhPhiVanChuyen();
                        }
                        else
                        {
                            bp = new HangHoa();
                            iDemh = iDemh + 1;
                            Console.Write("\nNhap ho ten nguoi nhan: Random\n");
                            bp.NguoiNhan = "Random";
                            Console.Write("Nhap dia chi nguoi nhan: Random\n");
                            bp.DiaChiNhan = "Random";
                            temp = rd.Next(1, 50);
                            Console.Write("Nhap trong luong: {0}\n", temp);
                            bp.TrongLuong = temp;
                            bp.PhiVanChuyen = bp.TinhPhiVanChuyen();
                        }
    
                        // Thêm phần tử vào danh sách các bưu phẩm
                        lstBuuPham.Add(bp);
                    }
                    while(iDemh < 2 || iDemt < 2);
                }
                else
                    do
                    {
                        Console.Write("Chon loai buu pham (1 - Thu / 2 - Hang hoa): ");
                        int iLoai = int.Parse(Console.ReadLine());
    
                        if (iLoai == 1 || iLoai == 2)
                        {
                            BuuPham bp = new BuuPham();
    
                            if (iLoai == 1)
                            {
                                bp = new Thu();
                                Console.Write("\nNhap ho ten nguoi nhan: ");
                                bp.NguoiNhan = Console.ReadLine();
                                Console.Write("Nhap dia chi nguoi nhan: ");
                                bp.DiaChiNhan = Console.ReadLine();
                                Console.Write("Nhap loai thu (1 - Nhanh / 0 - Binh thuong): ");
                                bp.LoaiThu = int.Parse(Console.ReadLine());
                                bp.PhiVanChuyen = bp.TinhPhiVanChuyen();
                            }
                            else
                            {
                                bp = new HangHoa();
                                Console.Write("\nNhap ho ten nguoi nhan: ");
                                bp.NguoiNhan = Console.ReadLine();
                                Console.Write("Nhap dia chi nguoi nhan: ");
                                bp.DiaChiNhan = Console.ReadLine();
                                Console.Write("Nhap trong luong: ");
                                bp.TrongLuong = float.Parse(Console.ReadLine());
                                bp.PhiVanChuyen = bp.TinhPhiVanChuyen();
                            }
    
                            // Thêm phần tử vào danh sách các bưu phẩm
                            lstBuuPham.Add(bp);
                        }
                        else Console.WriteLine("Chon sai!");
                        Console.Write("\nBan co muon nhap nua khong? (1 - Co / 0 - Khong): ");
                        iTT = int.Parse(Console.ReadLine());
                        Console.WriteLine();
                    }
                    while (iTT != 0);
                Console.WriteLine("\n==================Thong tin=======================\n");
                Console.WriteLine("Co tat ca {0} buu pham", lstBuuPham.Count);
                Console.WriteLine();
                lstBuuPham.Sort(new SoSanh());
                foreach (BuuPham bp in lstBuuPham)
                {
                    Console.WriteLine("-> Ho ten nguoi nhan: {0}, Dia chi: {1}, Phi van chuyen: {2}\n", bp.NguoiNhan, bp.DiaChiNhan, bp.PhiVanChuyen);
                }
    
                
                // ******** Xuất thông tin người nhận tên X ********
    
    
                Console.Write("Nhap ho ten nguoi nhan thu: ");
                strTemp = Console.ReadLine();
                Console.WriteLine("\n==================Thong tin=======================\n");
                int iDemkq = 0;
                foreach (BuuPham bp in lstBuuPham)
                {
                    if (bp.NguoiNhan == strTemp && bp.LoaiThu != -1)
                    {
                        iDemkq = iDemkq + 1;
                        Console.WriteLine("-> Ho ten nguoi nhan: {0}, Dia chi: {1}, Phi van chuyen: {2}\n", strTemp, bp.DiaChiNhan, bp.PhiVanChuyen);
                    }    
                }
                Console.WriteLine("Tim kiem duoc {0} ket qua!\n", iDemkq);
    
    
                // ******** Tính tổng phí vận chuyển ********
    
    
                foreach (BuuPham bp in lstBuuPham)
                {
                    dTongPhiVanChuyen = dTongPhiVanChuyen + bp.PhiVanChuyen;
                }
                Console.WriteLine("Tong phi van chuyen: {0}", dTongPhiVanChuyen);
            }
        }
    }

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

    Mình nghĩ bạn chưa đọc kĩ bài hướng dẫn rồi,bạn có thể implement 1 trong 2 interface để thưc hiện so sánh

    1.IComparable
    2.IComparer


    Visual C# Code:
    1. public class SoSanh:IComparer<BuuPham>

  3. #3
    Ngày gia nhập
    06 2012
    Nơi ở
    Hồ Chí Minh
    Bài viết
    3

    Mình làm giống bạn thì nó báo lỗi sau, bạn có thể cho mình biết cách sửa ko?

    'Bai_01.SoSanh' does not implement interface member 'System.Collections.Generic.IComparer<Bai_01.BuuPh am>.Compare(Bai_01.BuuPham, Bai_01.BuuPham)'

  4. #4
    Ngày gia nhập
    05 2012
    Bài viết
    62

    Kết quả trả về của hàm Compare là 1 số nguyên
    = 0 nếu a = b
    = 1 nếu a > b
    = -1 ếu a < b

  5. #5
    Ngày gia nhập
    06 2012
    Nơi ở
    Hồ Chí Minh
    Bài viết
    3

    Tks hungvboys đã trả lời, nhưng mình cần biết cách sửa lỗi chứ kết quả như bạn nói thì mình đọc trong hướng dẫn có rồi bạn à

Các đề tài tương tự

  1. Lỗi " DbComparisonExpression requires arguments with comparable types. " khi dùng linq to entity?
    Gửi bởi dangbon trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 3
    Bài viết cuối: 15-08-2012, 03:53 PM
  2. lỗi "Column name or number of supplied values does not match table definition."
    Gửi bởi biencute trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 05-06-2012, 08:19 PM
  3. Lỗi"error C2275: 'T' : illegal use of this type as an expression" khi dùng "list<T>::iterator it"
    Gửi bởi doicanhden trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 6
    Bài viết cuối: 19-01-2012, 01:59 AM
  4. giải quyết lỗi " too few arguments functions..." Giúp mình
    Gửi bởi andyhuynh trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 6
    Bài viết cuối: 20-05-2011, 05:19 PM

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