Вот задание: Дан список иногородних студентов из n человек: ФИО, адрес (город, улица, дом-квартира), приблизительное расстояние до Краснодара. Для них в общежитии выделено k мест. Вывести очередь студентов, которых необходимо селить в общежитие в первую очередь. Критерий отбора: расстояние до города.
Вот код:
// класс реализует интерфейс IComparable
class Student : IComparable
{
public string FIO { get; set; } // фамилия, имя, отчество
public string Adress { get; set; } // адрес
public int Rasstoianie { get; set; } // расстояние до Краснодара
// конструктор класса
public Student(string FIO, string Adress, int Rasstoianie)
{
this.FIO = FIO;
this.Adress = Adress;
this.Rasstoianie = Rasstoianie;
}
// установить способ сравнения расстояния
public int CompareTo(object obj)
{
// преобразование параметра obj к типу точки
Student p = (Student)obj;
if (Rasstoianie > p.Rasstoianie) // сравнение расстояния
return 1; // возвращается либо положительное,
if (Rasstoianie == p.Rasstoianie)
return 0; // либо нулевое,
return -1; // либо отрицательное значение
}
}
Форма:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
ArrayList ishod, res; // объявление динамических массивов
private void Form1_Load(object sender, EventArgs e)
{
ishod = new ArrayList(); // выделение памяти
res = new ArrayList();
}
private void button2_Click(object sender, EventArgs e) // кнопка узнать
{
// ТУТ НЕ ЗНАЮ, ЧТО ПИСАТЬ!
}
private void button1_Click(object sender, EventArgs e) // кнопка добавить
{
string FIO = (string)textBox_FIO.Text; // берем значение из текстбоксов
string Adress = (string)textBox_Adress.Text;
int Rasstoianie = (int)numericUpDown_Rasstoianie.Value;
Student p = new Student(FIO, Adress, Rasstoianie); // добавляем данные
ishod.Add(p); // добавляем в коллекцию
dataGridView1.Rows.Add(p.FIO, p.Adress, p.Rasstoianie); // добавляем в таблицу на форме
}
}
Мне нужно в форме вводить ФИО студента, его адрес и расстояние до Краснодара в текстбоксы и после все, что было введено добавляется в таблицу(Это все у меня сделано). Затем необходимо отсортировать эту таблицу по расстоянию, сделать это нужно в кнопке “Узнать”(button2), именно это и вызвало затруднение, не знаю, как реализовать.
Пробовал так, но не работает:
private void button2_Click(object sender, EventArgs e) // кнопка узнать
{
Student skt = new Student("", "", 0);
skt = (Student)ishod[0];
int min = skt.Rasstoianie;
int ind = 0;
dataGridView2.Rows.Clear();
foreach (Student p in res)
{
if (p.Rasstoianie < min)
{
min = p.Rasstoianie;
ind = ishod.IndexOf(p);
}
}
skt = (Student)ishod[ind];
dataGridView2.Rows.Add(skt);
}