Использование структур
Массивы состоят из элементов одного типа. В тех случаях, когда единообразно нужно обрабатывать наборы данных, представляющих совокупность величин различного типа, рассматривая их как единое целое, целесообразно использовать структуры.
Структуры определяются с помощью ключевого слова struct . Далее указывается имя структуры и в фигурных скобках определяются члены структуры. Структуры могут содержать произвольное число различных видов членов: полей, методов и других. Здесь в качестве членов структур (и в дальнейшем классов) будут использоваться только поля и методы.
Поле это переменная, объявленная в структуре. У поля есть имя и тип. Метод это функция, определенная в структуре.
Рассмотрим определение структуры, в которой содержатся два поля разных типов.
struct Sportsmen
{
public string famile;
public int rez;
}
Здесь описана структура с именем Sportsmen с двумя полями: famile типа string и rez типа int . Описание структуры располагается вне метода Main. В связи с этим уровень доступа к полям установлен максимальный (public – открытый доступ), что дает возможность доступа к полям из метода Main.
Экземпляр структуры создается в методе Main как обычно указанием типа перед именем переменной.
Sportsmen temp;
Далее в поля этой переменной можно поместить значения (инициализировать поля структуры). Для доступа к полю нужно указать имя переменной и после точки имя поля. Например,
using System;
class Program
{
struct Sportsmen
{
public string famile;
public int rez;
}
static void Main()
{
Sportsmen temp;
temp.famile = "Иванов";
temp.rez = 77;
Console.WriteLine("Фам {0}\tРезультат{1:f2}", temp.famile, temp.rez);
Console.ReadKey();
}
}
Или
using System;
struct Sportsmen
{
public string famile;
public int rez;
}
class Program
{
static void Main()
{
Sportsmen temp;
temp.famile = "Иванов";
temp.rez = 7;
Console.WriteLine("Фам {0}\t Результат {1:f2}", temp.famile, temp.rez);
Console.ReadKey();
}
}
Объявление массива структур. Например,
Sportsmen[] sp = new Sportsmen[5];
Здесь объявлен массив sp из 5 элементов, каждый из которых содержит два поля.
Использование структур делает представление данных более компактным и наглядным. Структуры можно пересылать одну в другую, если они идентичны. Возможен, например, следующий оператор
sp[0] = temp;
Пример.
using System;
struct Sportsmen
{
public string famile;
public int rez;
}
class Program
{
static void Main()
{
Sportsmen temp;
temp.famile = "Иванов";
temp.rez = 17;
Sportsmen[] sp = new Sportsmen[5];
sp[0] = temp;
Console.WriteLine("Фам {0}\t Результат {1:f2}", sp[0].famile,
sp[0].rez);
Console.ReadKey();
}
}
Пример 4.1. Протокол соревнований по прыжкам в высоту содержит список фамилий и результатов (одна попытка) в порядке стартовых номеров. Получить итоговую таблицу, содержащую фамилии и результаты в порядке занятых мест. Количество спортсменов не более 30. Для размещения исходных данных используется массив структур. Структура содержит информацию – фамилия и результат спортсмена. Массив структур является в данном случае одномерным массивом и для его обработки можно использовать типовые алгоритмы, рассмотренные в п. 3.
using System;
struct Sportsmen
{
public string famile;
public double rez;
}
class Program
{
static void Main()
{
Sportsmen[] sp = new Sportsmen[5];
string[] s = new string[] { "Иванов", "Петров", "Сидоров", "Кузнецов",
"Макаров" };
double[] r = new double[] { 1.50, 1.55, 1.47, 1.46, 1.54 };
for (int i = 0; i < sp.Length; i++)
{
sp[i].famile = s[i];
sp[i].rez = r[i];
Console.WriteLine("Фамилия {0}\t Результат {1:f2}",
sp[i].famile, sp[i].rez);
}
//Упорядочение по результатам
for (int i = 0; i < sp.Length - 1; i++)
{
double amax = sp[i].rez;
int imax = i;
for (int j = i + 1; j < sp.Length; j++)
{
if (sp[j].rez > amax)
{
amax = sp[j].rez;
imax = j;
}
}
Sportsmen temp;
temp = sp[imax];
sp[imax] = sp[i];
sp[i] = temp;
}
Console.WriteLine();
for (int i = 0; i < sp.Length; i++)
{
Console.WriteLine("Фамилия {0}\t Результат {1:f2}",
sp[i].famile, sp[i].rez);
}
Console.ReadKey();
}
}
Здесь исходные данные первоначально заданы в двух массивах: фамилии в массиве s, результаты – в массиве r. Далее этими данными заполняются поля структуры.
В результат будет выведено
Вопросы для самопроверки
1. Структура. Поля структуры. Члены структуры. Объявление структуры. Доступ к отдельным полям структуры.
2. Создание экземпляра структуры. Инициализация полей структуры.
3. Операции со структурами.
4. Преимущества использования структур.
5. Массивы структур и их обработка.
Дата добавления: 2015-02-07; просмотров: 1500;