Напишите программу на C #, которая использует алгоритм итеративного двоичного поиска для поиска возраста человека по его имени. - PullRequest
0 голосов
/ 06 октября 2019

Для этого необходимо разделить массив, содержащий возраст и имя человека, а затем выполнить операцию поиска по переменной name и, наконец, вывести возраст, если имя присутствует в массиве.

Итак, пока ясоздали только двумерный массив, но не умеют разбивать, а затем выполнить поиск

String[,] arr = { { "aakif", "25" }, {"ali", "31"} , {"ben","35"}, {"hassnain" ,"45" } };

Ответы [ 3 ]

0 голосов
/ 06 октября 2019
using System;

namespace ConsoleApp
{

  static partial class Program
  {
    static void Main(string[] args)
    {
      Test();
      Console.WriteLine();
      Console.WriteLine("End.");
      Console.ReadKey();
    }
    static void Test()
    {
      string[,] arr = 
      { 
        { "aakif", "25" }, 
        { "ali", "31" }, 
        { "ben", "35" }, 
        { "hassnain", "45" }
      };
      string search = "ali";
      string age = arr.GetAge(search);
      if ( age != null )
        Console.WriteLine($"{search} age = {age}");
      else
        Console.WriteLine($"{search} not found");
    }
    static string GetAge(this string[,] array, string name)
    {
      for ( int index = array.GetLowerBound(0); index <= array.GetUpperBound(0); index++ )
        if ( array[index, array.GetLowerBound(1)] == name )
          return array[index, array.GetUpperBound(1)];
      return null;
    }
  }

}

Вывод:

ali age = 31
0 голосов
/ 06 октября 2019

Первый индекс индекса [0,0], [1,0], если имя, которое вы ищете. [Индекс, 1] и распечатайте значение возраста.

string[,] arr = { { "aakif", "25" }, { "ali", "31" }, { "ben", "35" }, { "hassnain", "45" } };
        string search = "ali";
        for (int i = 0; i < arr.GetLength(0); i++)
        {
            if (arr[i,0].ToString() == search)
            {
                Console.WriteLine(arr[i, 0] + " " + arr[i, 1] + " years old");
            }
        }
0 голосов
/ 06 октября 2019

Я не согласен с тем, как вы храните ваши данные, но вы можете выполнить поиск с помощью следующего:

String[,] arr = new string[2,4];
arr[0, 0] = "saif";
arr[0, 1] = "25";
arr[0, 2] = "ali";
arr[0, 3] = "17";
arr[1, 0] = "aakif";
arr[1, 1] = "11";
arr[1, 2] = "hassnain";
arr[1, 3] = "50";

int index = -1;
int jindex = -1;
for ( int i =0 ; i <arr.GetLength(0) ; i++) {
    for ( int j =0 ; j <arr.GetLength(1) ; j++) {
        if (arr[i,j]== "ali")   {
            index = i;
            jindex = j;
            break;
        }

    }
}

if ( index != -1) {
    Console.WriteLine(arr[index,jindex] + " " + arr[index,jindex +1 ]);
}
else Console.WriteLine("Not Found");
...