Студопедия — Использование структур
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

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






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

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







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



Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Виды сухожильных швов После выделения культи сухожилия и эвакуации гематомы приступают к восстановлению целостности сухожилия...

КОНСТРУКЦИЯ КОЛЕСНОЙ ПАРЫ ВАГОНА Тип колёсной пары определяется типом оси и диаметром колес. Согласно ГОСТ 4835-2006* устанавливаются типы колесных пар для грузовых вагонов с осями РУ1Ш и РВ2Ш и колесами диаметром по кругу катания 957 мм. Номинальный диаметр колеса – 950 мм...

Философские школы эпохи эллинизма (неоплатонизм, эпикуреизм, стоицизм, скептицизм). Эпоха эллинизма со времени походов Александра Македонского, в результате которых была образована гигантская империя от Индии на востоке до Греции и Македонии на западе...

Эндоскопическая диагностика язвенной болезни желудка, гастрита, опухоли Хронический гастрит - понятие клинико-анатомическое, характеризующееся определенными патоморфологическими изменениями слизистой оболочки желудка - неспецифическим воспалительным процессом...

Признаки классификации безопасности Можно выделить следующие признаки классификации безопасности. 1. По признаку масштабности принято различать следующие относительно самостоятельные геополитические уровни и виды безопасности. 1.1. Международная безопасность (глобальная и...

Прием и регистрация больных Пути госпитализации больных в стационар могут быть различны. В цен­тральное приемное отделение больные могут быть доставлены: 1) машиной скорой медицинской помощи в случае возникновения остро­го или обострения хронического заболевания...

Studopedia.info - Студопедия - 2014-2024 год . (0.008 сек.) русская версия | украинская версия