Trang 1 trên tổng số 3 123 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 23 kết quả

Đề tài: Tìm kiếm trong mảng với toán tử ba ngôi

  1. #1
    Ngày gia nhập
    05 2011
    Bài viết
    13

    Mặc định Tìm kiếm trong mảng với toán tử ba ngôi

    Nhờ các bạn chỉ giúp.
    Mình có 2 column trong data column1 và column2
    Code:
    id    column1        column2
    
    1     346126          7482    
    2     357921          9424
    3     284472          2616
    4     136829          5631
    5     123456          2857
    mình muốn tìm kiếm các giá trị ở column1 trong column2
    ví dụ ở id=1. lấy giá trị ở column1 tìm kiếm trong column2 nếu có ta đánh dấu là 1 nếu ko có ta đánh dấu là 0. tìm kiếm lần lượt

    code mình viết nhưng không được các bạn xem gợi ý giúp mình với.
    Visual C# Code:
    1. using System;
    2. using System.Collections.Generic;
    3. using System.Linq;
    4. using System.Text;
    5. using System.Data.SqlClient;
    6. using System.Data;
    7. using System.IO;
    8. using System.Collections;
    9. {
    10.     class Program
    11.     {
    12.         static void Main(string[] args)
    13.         {
    14.             SqlConnection con = new SqlConnection();
    15.             con.ConnectionString = "server=.\\SQL;database=test2; Trusted_Connection=true";
    16.             SqlDataReader rdr = null;
    17.            
    18.            
    19.                 con.Open();
    20.                 SqlCommand cmd = new SqlCommand(@"select * from table1 ", con);
    21.                 rdr = cmd.ExecuteReader();
    22.                 //int[] c;
    23.                 int m = 0;
    24.                 int n = 0;
    25.                 int i,j=0;
    26.  
    27.                
    28.                 int[,] c ;
    29.                
    30.                 while (rdr.Read())
    31.                 {
    32.                    
    33.                     string column1 = (string)rdr["column1"];
    34.                     string column2 = (string)rdr["column2"];
    35.                     string col1 = column1.Substring(0,1);
    36.                     string col2 = column1.Substring(1, 1);
    37.                     string col3 = column1.Substring(2, 1);
    38.                     string col4 = column1.Substring(3, 1);
    39.                     string col5 = column1.Substring(4, 1);
    40.                     string col6 = column1.Substring(5, 1);
    41.                     string coll1 = column2.Substring(0, 1);
    42.                     string coll2 = column2.Substring(1, 1);
    43.                     string coll3 = column2.Substring(2, 1);
    44.                     string coll4 = column2.Substring(3, 1);
    45.                     int co1 = Convert.ToInt32(col1);
    46.                     int co2 = Convert.ToInt32(col2);
    47.                     int co3 = Convert.ToInt32(col3);
    48.                     int co4 = Convert.ToInt32(col4);
    49.                     int co5 = Convert.ToInt32(col5);
    50.                     int co6 = Convert.ToInt32(col6);
    51.                     int c1 = Convert.ToInt32(coll1);
    52.                     int c2 = Convert.ToInt32(coll2);
    53.                     int c3 = Convert.ToInt32(coll3);
    54.                     int c4 = Convert.ToInt32(coll4);
    55.  
    56.                     int[] arr1 =  {co1,co2,co3,co4,co5,co6 };
    57.                     int[] arr2 =  { c1, c2, c3, c4 };
    58.                     int[,] a = new int[n, j];
    59.  
    60.                     m = arr1.Length;
    61.                     for ( j = 0; j < m; j++)
    62.                     {
    63.                         int k = arr1[j];
    64.                         c = new int[n, j];
    65.                         c[n, j] = Array.IndexOf(arr2, k) ? 0 : 1; // đoạn này mình không biêt sử dụng hàm nào nó báo lỗi hoài
    66.                     }
    67.                     n++;
    68.                    
    69.                 }
    70.                 for (j = 0; j < m; j++)
    71.                 {
    72.  
    73.                     for (i = 0; i < n; i++)
    74.                     {
    75.                         int[,] b = new int[i, j];
    76.                         if (b[i, j] == 1) break;
    77.                         Console.Write("j");
    78.                         if (i < n) Console.Write("i");
    79.                     }
    80.                 }
    81.            
    82.                
    83.                 Console.ReadLine();
    84.  
    85.            
    86.  
    87.         }
    88.  
    89.        
    90.    }
    91. }
    Đã được chỉnh sửa lần cuối bởi shajang : 25-02-2012 lúc 08:42 PM.

  2. #2
    Ngày gia nhập
    10 2008
    Bài viết
    39

    bạn chạy thử code này xem đúng ý bạn chưa nhé
    Visual C# Code:
    1. using System;
    2. using System.Collections.Generic;
    3. using System.Linq;
    4. using System.Text;
    5.  
    6. namespace ConsoleApplication1
    7. {
    8.     class Program
    9.     {
    10.         static void Main(string[] args)
    11.         {
    12.             int [] a=new int[6]{1,2,3,4,5,6};
    13.             int[] b = new int[3] { 2, 4, 5 };
    14.             int d = 0;
    15.             for(int i=0;i<6;i++)
    16.             {
    17.                 for (int j = 0; j < 3; j++)
    18.                 {
    19.                     if (a[i] == b[j])
    20.                         d++;                  
    21.                 }
    22.                 if (d!=0)
    23.                     Console.Write("{0}\t",1);
    24.                 else
    25.                     Console.Write("{0}\t", 0);
    26.                 d = 0;
    27.             }
    28.             Console.ReadLine();
    29.                
    30.         }
    31.     }
    32. }

  3. #3
    Ngày gia nhập
    05 2011
    Bài viết
    13

    cảm ơn bạn thuccoi vấn đề là mình muốn sử dụng toán tử 3 ngôi.
    lấy phần tử mảng a tìm trong mảng b có trả về 1 không có trả về 0 và kết quả đó lưu vào mảng c.
    mình đang làm bài toán nhiều mảng ở đây mình bóc tách ra để cho dễ dàng sau đó mới áp dụng vào.

  4. #4
    Ngày gia nhập
    04 2010
    Bài viết
    1,534

    Trích dẫn Nguyên bản được gửi bởi shajang Xem bài viết
    ...
    mình thử dùng nhiều hàm trong array mà ko được mong được các bạn chỉ giúp mình .
    Đã thử hàm Array.IndexOf(...) chưa?

  5. #5
    Ngày gia nhập
    05 2011
    Bài viết
    13

    mình chưa thử mình dùng array.Fill với BinarySearch để mình thử xem cảm ơn bạn

  6. #6
    Ngày gia nhập
    04 2010
    Bài viết
    1,534

    Mặc định Tìm kiếm trong mảng với toán tử ba ngôi

    Tự dưng bạn viết câu hỏi mới chồng lên câu hỏi ban đầu.
    Chơi kiểu này tôi không theo dõi nổi. Bạn chịu khó chờ người khác vậy.

  7. #7
    Ngày gia nhập
    08 2011
    Nơi ở
    Yên Bái- Hà Nội
    Bài viết
    961

    c[n, j] = Array.IndexOf(arr2, k) ? 0 : 1; đoạn đó lỗi là đúng rồi. Bởi vì :
    IndexOf= int : nếu ko có thì trả về -1, có thì là index >=0. Do vậy, bạn phải sửa:
    Array.IndexOf(arr2, k)>=0? 0:1 ; ( cái nè bạn xem lại nhé, vì mình ko đọc hết nên ko rõ có thì gán =?, ko có thì gán bằng bao nhiêu.ok
    Skype: mrfour.it - Yahoo:mrfour_it
    Gmail: mrfour.it@gmail.com
    Bạn muốn học lập trình? Bạn chưa có kiến thức cơ bản? Bạn muốn học từ cơ bản tới nâng cao?... Bạn muốn có source code để tham khảo? Muốn có người hỗ trợ khi học?....http://www.laptrinh123.com sẽ giúp bạn những điều đó!

  8. #8
    Ngày gia nhập
    05 2011
    Bài viết
    13

    Trích dẫn Nguyên bản được gửi bởi VoTichSu Xem bài viết
    Tự dưng bạn viết câu hỏi mới chồng lên câu hỏi ban đầu.
    Chơi kiểu này tôi không theo dõi nổi. Bạn chịu khó chờ người khác vậy.
    hi thực ra vấn đề vẫn như vậy câu hỏi trước là mình bóc tách nó ra nhưng mình thấy nó ko đúng lắm với ý của mình nên mình edit lại. cảm ơn bạn quan tâm câu hỏi của mình.

    Trích dẫn Nguyên bản được gửi bởi mrfour.it Xem bài viết
    c[n, j] = Array.IndexOf(arr2, k) ? 0 : 1; đoạn đó lỗi là đúng rồi. Bởi vì :
    IndexOf= int : nếu ko có thì trả về -1, có thì là index >=0. Do vậy, bạn phải sửa:
    Array.IndexOf(arr2, k)>=0? 0:1 ; ( cái nè bạn xem lại nhé, vì mình ko đọc hết nên ko rõ có thì gán =?, ko có thì gán bằng bao nhiêu.ok
    mình thay đổi như thế này
    Visual C# Code:
    1. c[n, j] = Array.IndexOf(arr2, k) >= 0 ? j=1 : j=0;

    nếu k có thì lưu giá trị biến j=1 còn không có thì lưu giá trị biến j=0. Nó báo lỗi Index was outside the bounds of the array.

    bạn xem có thể giúp mình với

  9. #9
    Ngày gia nhập
    10 2011
    Bài viết
    552

    c[n, j] = Array.IndexOf(arr2, k) >= 0 ? j=1 : j=0;
    Làm thế này thì j cứ lui tới = 1 , = 0 mãi thì làm sao dừng vòng lặp dc
    Thêm vào đó n ban đầu =0, khởi tạo c=new int[n,j] ??
    Còn nữa: lệnh khởi tạo lại nằm trong vòng lặp. Vậy cứ mỗi bước lặp lại tạo lại 1 lần thì đến khi ra vòng lặp thì ta biết nó nằm ở chỗ nào ?

    Visual C# Code:
    1.                     m = arr1.Length;
    2.                     int[] c=new int[m];
    3.                     for ( j = 0; j < m; j++)
    4.                     {
    5.                         int k = arr1[j];
    6.                        
    7.                         c[j] = (Array.IndexOf(arr2, k)>=0 ) ? 1 :0;
    8.                     }
    c là cái mảng đánh dấu nên nó cũng chỉ là mảng 1 chiều thôi

    Ngoài Array.IndexOf bạn cũng có thể dùng cái này: arr2.Contains<int>(k) xem sao.
    Đã được chỉnh sửa lần cuối bởi clchicken : 26-02-2012 lúc 02:54 PM.
    Um Mani Padme Hum...!!

  10. #10
    Ngày gia nhập
    05 2011
    Bài viết
    13

    cảm ơn bạn clchicken mình cũng thấy khởi tạo mang c=new int[n,j] trong còng lặp là cũng có vấn đề
    vấn đề mảng c mình nghĩ nó phải là mảng 2 chiều n là số dong trong column.
    n = 0 là các giá trị dòng 1 column1 so sánh với các giá trị trong dòng 1 column2
    n = 1 là các giá trị dòng 2 column1 so sánh với các giá trị trong dòng 2 column2
    cứ tiếp tục nư vậy cho đến hết do vây mình nghĩ mảng c là mảng 2 chièu c[n,j] j là các giá trị trả về 0 or 1 n là số dòng
    khi so sanh hết 1 dòng thì n tăng lên 1 giá trị

    Visual C# Code:
    1.  m = arr1.Length;
    2.                    
    3.                     c = new int[n, j];
    4.                     for ( j = 0; j < m; j++)
    5.                     {
    6.                         int k = arr1[j];
    7.                         c[n,j] = (Array.IndexOf(arr2, k) >= 0) ? 1 : 0; // theo mình hiểu đoạn này là nếu k có trong ar2 thì
    8.                                                                                      // lưu giá trị j=1 còn không thì lưu là 1 nhưng nó vẫn  
    9.                                                            // báo lỗi Index was outside the bounds of the array.
    10.                     }
    11.                     n++;
    mong được các bạn giúp đỡ

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

  1. [Kiếm Thế] Kiếm Thế Ngạo Thiên Kiếm Chạy Thử Nghiệm vào 10h ngày 15/09
    Gửi bởi c0jskull trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 5
    Bài viết cuối: 29-09-2013, 10:45 AM
  2. Cách hiển thị KQ tìm kiếm trên trang Tìm kiếm trong MVC
    Gửi bởi nobita2009hp trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 0
    Bài viết cuối: 02-07-2012, 04:19 PM
  3. Tìm kiếm trong c# như tìm kiếm của google ( auto complete )
    Gửi bởi bigstone trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 24
    Bài viết cuối: 08-09-2011, 11:52 PM
  4. Code tìm kiếm trong cây nhị phân trong C++. Lỗi chỉ tìm được từ đầu tiên trong file thôi sửa thế nào?
    Gửi bởi elvish trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 1
    Bài viết cuối: 11-04-2010, 09:43 PM
  5. [LT][Tìm kiếm]Xóa node trong cây nhị phân tìm kiếm
    Gửi bởi schtroumpfs trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 12
    Bài viết cuối: 05-06-2007, 05:47 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