2016-05-05 2 views
-2

У меня есть многомерный массив в текстовом файле:Поиск многомерный массив

a,1,2,3 
b,4,5,6 
c,7,8,9 
d,10,11,12 

Я хочу, чтобы ввести один из номеров, поиск массива, а также отображать соответствующее письмо для строки число появляется.

Любая помощь была бы принята с благодарностью.

Edit:

У меня есть файл CSV, содержащий информацию, приведенную выше.

До сих пор у меня есть:
1. Созданный массив для хранения прочитать все строки в файле
2. Создан второй массив для хранения конечного массива значений
3. Создан третьего массива для хранения линия разделяется на и возвращает значения во второй массив.

Это код:

string[] as_FirstArray = System.IO.File.ReadAllLines("PartNumbersFile.csv"); 
string[,] as_SecondArray = new string[4, as_FirstArray.Length]; 
string[] as_ThirdArray; 

string s_Input = Console.ReadLine(); 

for (int i_Count1 = 0; i_Count1 < as_FirstArray.Length; i_Count1++) 
{ 
    as_ThirdArray = as_FirstArray[i_Count1].Split(','); 

    as_SecondArray[0, i_Count1] = as_ThirdArray[0]; 
    as_SecondArray[1, i_Count1] = as_ThirdArray[1]; 
    as_SecondArray[2, i_Count1] = as_ThirdArray[2]; 
    as_SecondArray[3, i_Count1] = as_ThirdArray[3]; 
} 

А теперь я полностью застрял. Мне сказали, что отсюда мне нужно:
1. используйте цикл for для индекса as_SecondArray [1] от первой строки до последней строки.
2. используйте оператор if, чтобы определить, найден ли userinput в индексе [1], и если да, сохраните номер счета цикла. (Здесь, если совпадения не найдено, я буду повторять для индекса [2] и снова, если совпадение не найдено, повторите для индекса [3].)
3. используйте другой для цикла и если инструкция по индексу [0] - сопоставить номер счета из найденного совпадения и отобразить соответствующую запись. (Я могу сделать этот шаг, но это безнадежно, не зная, как делать шаги 1 и 2.)

Я не могу указать конкретный индекс как цель цикла. Или где я помещаю цикл по отношению к циклу, который у меня уже есть - внутри него или нет.

Edit:

СПАСИБО КТО EDITED МОЙ ПОСТ И я теперь УДАЛИТЬ МОЙ ОТВЕТ :-)

После намного больше времени, я сделал небольшой прогресс. Я понял, как петля конкретный индекс и определить, если UserInput обнаружен в этом индексе:

 for (int i_Count2 = 0; i_Count2 < as_SecondArray.GetLength(1); i_Count2++) 
     { 
      for (int i_Count3 = 0; i_Count3 < as_SecondArray.GetLength(0); i_Count3++) 
      { 
       if (as_SecondArray[1, i_Count3].Equals(s_Input)) 
       { 
        s_Found = as_SecondArray[1, i_Count3]; 
       } 
       else { lblOutput.Text = "not found"; } 
      } 
     } 

Но я застрял на том, как получить номер цикла i_Count3.

+2

Звучит как домашнее задание – ntohl

+0

И я чувствую себя довольно хорошо прямо сейчас! У меня наконец есть рабочий код! Я хотел бы опубликовать код, если он может помочь кому-то другому, но я не хочу публиковать его в другом месте (опять же). Должен ли я a) опубликовать его в комментарии b) отредактировать или добавить исходное сообщение c) добавить ответ? Или d) не беспокоить вообще :-D – kiwichick

ответ

0

Не создавайте многомерный массив вместо создания словаря или Hashtable, где ключ будет числом, а значением будет буква. Теперь вы можете легко найти номер и найти соответствующую букву со временем поиска O (1).

+0

Спасибо, но мне нужно использовать многомерный массив. – kiwichick

Смежные вопросы