Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Использование структур




Структуры и классы

Классы и структуры являются двумя основными типами в C#. Классы и структуры представляют собой типы, создаваемые пользователем. Структура является типом значения. Класс является ссылочным типом (см. п. 1.1). Далее рассматривается работа со структурами и с классами (определение, создание объектов соответствующего типа, различные способы инициализации полей и т. п.). Для решения многих задач можно использовать как классы, так и структуры. Однако, классы имеют более широкое применение. В частности, классы допускают наследование, что позволяет на базе одного (базового) класса без особых затрат создавать различные производные классы (см. п. 4.3).

 

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

Структуры определяются с помощью ключевого слова 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. Далее этими данными заполняются поля структуры.

В результат будет выведено




Поделиться с друзьями:


Дата добавления: 2014-12-07; Просмотров: 504; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.022 сек.