Как правильно передать массив структур в функцию в структуре - C#
Формулировка задачи:
Функция Search должна принимать массив, у меня это массив структур, как это правильно сделать? В моем случае я получаю ошибку.
Аргумент 1: не удается преобразовать из "Project11.Bus" в "Project11.Bus[]". Project11
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace Project11
{
struct Bus
{
public int N;
public string Pn;
public double Vo;
public double Vp;
public Bus(int n, string pn, double vo, double vp)
{
this.N = n;
this.Pn = pn;
this.Vo = vo;
this.Vp = vp;
}
public void Show()
{
Console.WriteLine("№ рейса " + this.N);
Console.WriteLine("Пункт назначения: " + this.Pn);
Console.WriteLine("Время отправления: " + this.Vo);
Console.WriteLine("Время прибытия : " + this.Vp);
}
public void Write()
{
string fileName = "bus.txt";
FileStream aFile = new FileStream(fileName, FileMode.OpenOrCreate);
StreamWriter sw = new StreamWriter(aFile);
aFile.Seek(0, SeekOrigin.End);
sw.WriteLine("№ рейса " + this.N);
sw.WriteLine("Пункт назначения: " + this.Pn);
sw.WriteLine("Время отправления: " + this.Vo);
sw.WriteLine("Время прибытия : " + this.Vp);
sw.WriteLine();
sw.Close();
Console.WriteLine();
Console.WriteLine("Данные записаны в файл");
}
public void Search(Bus[] arr, double _xtime, int k)
{
double xtime = _xtime;
int z = 0;
int g = k - 1;
int m;
while (z < g)
{
m = (z + g) / 2;
if (xtime > arr[m].Vo)
z = m + 1;
else
g = m;
}
if (arr[z].Vo == xtime)
{
arr[z].Show();
Console.WriteLine("--------------------------");
}
else
{
Console.WriteLine("такого рейса не существует");
Console.WriteLine("--------------------------");
}
}
}
class PR11
{
public static void Main()
{
int k = 5;
Bus[] bus = new Bus[k];
bus[0] = new Bus(122, "Paris", 14.00, 14.50);
bus[1] = new Bus(12, "Vena", 16.00, 17.35);
bus[2] = new Bus(121, "Roma", 7.20, 8.15);
bus[3] = new Bus(356, "London", 13.00, 17.30);
bus[4] = new Bus(356, "Praha", 10.00, 21.30);
Console.Read();
Console.Read();
Console.WriteLine("Сортировка по времени отправки......");
Bus tmp = new Bus();
for (int i = 0; i < bus.Length; i++)
{
for (int j = i + 1; j < bus.Length; j++)
{
if (bus[i].Vo > bus[j].Vo) //По возростанию
{
tmp = bus[i];
bus[i] = bus[j];
bus[j] = tmp;
}
}
}
Console.WriteLine();
Console.WriteLine("Поиск...");
Bus.Search(bus[k],14.00,k);
Console.Read();
Console.Read();
}
}
}Решение задачи: «Как правильно передать массив структур в функцию в структуре»
textual
Листинг программы
public static void Search(Bus[] arr, double _xtime, int k)
{
// ...