Lỗi hàm kiểm tra trùng

Thảo luận trong 'Lập trình & Đồ hoạ' bắt đầu bởi anhtu07, 4/8/11.

  1. anhtu07

    anhtu07 T.E.T.Я.I.S Lão Làng GVN

    Tham gia ngày:
    22/11/08
    Bài viết:
    655
    Mã:
    static void Main(string[] args)
            {
                int[] arr = new int[5];
                arr[0] = 1;
                arr[1] = 2;
                arr[2] = 3;
                arr[3] = 4;
                arr[4] = 5;
                Console.Write("Hay nhap vao mot so: ");
                int nhap = Console.Read();
                if (KiemTra(arr, nhap))
                    Console.WriteLine("So ban nhap bi trung!!!!!");
                else
                    Console.WriteLine(nhap.ToString());
                Console.ReadLine();
                
            }
    
            static bool KiemTra(int[] arr, int compare)
            {
                bool flag = false;
                for (int i = 0; i < arr.Length; i++)
                {
                    if (compare == arr[i])
                    {
                        flag = true;
                        break;
                    }
                }
                return flag; 
            }
    Bài toán là cho một mảng giá trị, nhập vào 1 giá trị rồi xem giá trị đó có nằm trong mảng hay ko? nếu có thì báo là trùng, còn ko thì hiện ra giá trị đó
    1. Các bác coi dùm em hàm KiemTra em viết vậy đúng hay sai?
    Trong hàm KiemTra sẽ nhận 2 tham số:
    - arr: mảng int
    - compare: số cần so sánh
    nếu compare có xuất hiện trong arr thì trả về true
    2. Làm sao chỉnh trong visual mà mình ko cần thêm dòng Concole.ReadLine() mà chương trình vẫn phải đợi mình bấm nút mới tắt

    Hình như vấn đề là khi khi em nhập vào một giá trị thì biến nhap nhận một giá trị là mã ASCII của giá trị mình nhập,
    thí dụ em nhập "A" thì biến nhap nhận giá trị 65 chứ không phải "A"
    các bác copy zề chạy thử coi có bị như zậy ko?
     
  2. HieuNM

    HieuNM Mayor of SimCity

    Tham gia ngày:
    3/3/07
    Bài viết:
    4,078
    Nơi ở:
    H.U.S.T
    1. bạn thay dòng int nhap = ... bằng đoạn này
    Mã:
    int nhap = 0;
    try
    {
       nhap = int.Parse(Console.ReadLine());
    }
    catch { }
    cái hàm kiểm tra bạn có thể dùng List<int> để kiểm tra trùng lặp nhanh hơn dùng kiểu int[] kia vì List<> có phương thức IndexOf khá hữu hiệu trong trường hợp của bạn
    2. Console.ReadKey(); :-?
     
    Chỉnh sửa cuối: 5/8/11
  3. anhtu07

    anhtu07 T.E.T.Я.I.S Lão Làng GVN

    Tham gia ngày:
    22/11/08
    Bài viết:
    655
    1. vẫn ko được @@ biến chỉ nhận giá trị ASCII, bác copy zề chạy thử coi có bị zậy ko?
    2. Cái này thì ra rồi
     
  4. viet86

    viet86 Dragon Quest Lão Làng GVN

    Tham gia ngày:
    21/6/06
    Bài viết:
    1,260
    Nơi ở:
    Alone in the dark
    ủa như trên thì bạn muốn kiểm tra 1 biến int có trùng trong mảng int hay ko, vậy sao bạn lại nhập vào 1 ký tự A?
     
  5. anhtu07

    anhtu07 T.E.T.Я.I.S Lão Làng GVN

    Tham gia ngày:
    22/11/08
    Bài viết:
    655
    cái đó em thí dụ cái vụ biến chỉ nhận giá trị ASCII, khi nhập "A" thì chỉ biến nhận giá trị "65", khi nhập 1 thi biến nhận giá trị 49 @@
     
  6. HieuNM

    HieuNM Mayor of SimCity

    Tham gia ngày:
    3/3/07
    Bài viết:
    4,078
    Nơi ở:
    H.U.S.T
    thì đấy là hàm console.read() nó bị như thế
    còn hàm console.readline() thì không bị
     
    anhtu07 thích bài này.
  7. anhtu07

    anhtu07 T.E.T.Я.I.S Lão Làng GVN

    Tham gia ngày:
    22/11/08
    Bài viết:
    655
    thì ra là zậy, cám ơn bác nhiều :D
     

Chia sẻ trang này