КАТЕГОРИИ: Архитектура-(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, 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}", } //Упорядочение по результатам 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}", } Console.ReadKey(); } } Здесь исходные данные первоначально заданы в двух массивах: фамилии в массиве s, результаты – в массиве r. Далее этими данными заполняются поля структуры. В результат будет выведено
Дата добавления: 2014-12-07; Просмотров: 523; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |