Компьютерная игра 'Чемпионат по волейболу'

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    675,43 Кб
  • Опубликовано:
    2016-06-09
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Компьютерная игра 'Чемпионат по волейболу'

1.       Условие задачи

компьютерный игра волейбол алгоритм

На мужском чемпионате России по волейболу N команд разбиты на 2 группы. Игры в группе проходят в 2 круга. Счет в матче может быть 3:0, 3:1, 3:2.

При равенстве очков в группе у нескольких команд место определяется: а) по общей разнице выигранных и проигранных партий; б) по большему количеству партий, выигранных в гостях; в) по результату игр между этими командами. Далее в полуфиналах сборные, занявшие первые места в группах, играют со сборными, занявшими вторые места в других группах. Финал играется до 2-х побед одной из команд.

.         Список переменных и типов данных

Имя

Тип

Описание

первая_группа

Целый

Хранит число строк в таблице со списком команд первой группы

вторая_группа

Целый

Хранит число строк в таблице со списком команд второй группы

строки_таблицы1

Целый

Хранит число строк в таблице с результатами игр первой группы

строки_таблицы2

Целый

Хранит число строк в таблице с результатами игр второй группы

N

Целый

Хранит число команд в чемпионате

i, j1, j2, x, x1, g, g1

Целый

Переменные, используемые в качестве счетчиков

Класс характеристика_команд_группы

название

object

Хранит название команды

очки

Целый

Хранит число очков заработанных командой

выигранные_партии

Целый

Хранит число партий выигранных командой

проигранные_партии

Целый

Хранит число партий проигранных командой

победы_в_гостях

Целый

Хранит число матчей выигранных в гостях

Класс перестановка

хозяин

object

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

гость

object

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

Класс полуфинал_и_финал

название

object

Хранит название команды играющей в полуфинале

очки

Целый

Хранит число очков заработанных этой комадой


3.       Текстовый алгоритм

Начало.

п.1 Ввод команд участвующих в чемпионате

п.1.1. Выполняем цикл по int i = 0; i < первая_группа; i++

п.1.1.1. Заносим название команды в группа1[i].название

п.1.2. Выполняем цикл по int i = 0; i < вторая_группа; i++

п.1.2.1. Заносим название команды в группа2[i].название

п.2. Заносим в массив группа1[] результаты игр группового этапа

п.2.1. Выполняем цикл по int i = 0; i < стр1; i++

п.2.1.1. Выполняем цикл по int x = 0; x < первая_группа; x++

п.2.1.1.1. Записываем в массив группа1[x] результаты игр в первой группе

п.3. Выполняем цикл по

int i = 0, x1 = 1; i < первая_группа - 1; i++, x1 = i + 1

п.3.1. Выполняем цикл по ; x1 < первая_группа; x1++

п.4. Выполняем цикл по int i = 0; i < стр2; i++

п.4.1. Выполняем цикл по int x = 0; x < вторая_группа; x++

п.4.1.1. Записываем в массив группа2[x] результаты игр во второй группе

п.5. Выполняем цикл по

int i = 0, x1 = 1; i < вторая_группа - 1; i++, x1 = i + 1

п.5.1. Выполняем цикл по ; x1 < вторая_группа; x1++

п.5.1.1. Сортируем массив группа2[i]

п.6. Создаем массив полуфинал и записываем результаты

игр полуфинала в полуфинал.очки

п.7. Сортируем массив полуфинал

п.7.1. Если полуфинал[0].очки < полуфинал[1].очки, то меняем местами

полуфинал[0].очки и полуфинал[1].очки

п.7.2. Если полуфинал[2].очки < полуфинал[3].очки, то меняем местами

полуфинал[2].очки и полуфинал[3].очки

п.8. Создаем массив финал и записываем результаты игр финала

в финал.очки

п.9. Обрабатываем результаты финала

п.9.1. Если финал[0].очки > финал[1].очки, то

п.9.1.1. Вывод “Победитель ”+ финал[0].название

п.9.2. Иначе

п.9.3. Вывод “Победитель ”+ финал[1].название

п.9.4. Если финал[0].очки == финал[1].очки, то

п.9.5. Вывод “Необходимо сыграть третий дополнительный матч”

п.9.6. Обрабатываем результаты дополнительного матча

п.9.7. Если финал[0].очки > финал[1].очки, то

п.9.7.1. Вывод “Победитель ”+ финал[0].название

п.9.8. Иначе

п.9.8.1. Вывод “Победитель ”+ финал[1].название

Конец.

.        
Графический алгоритм





int проигранные_партии;int победы_в_гостях;

}перестановка

{object хозяин; public object гость;

}полуфинал_и_финал

{object название; public int очки;

}void ОК_Click(object sender, EventArgs e)

{(Счетчик.Value <= 3)

{.Show("Обычно в чемпионате России участвуют больше чем 2 или 3 команды. Но программа позволяет обработать результаты и в этом случае. Команды будут играть в одной группе.");.Enabled = false;.Enabled = false;

вторая_группа = 1;

первая_группа = Convert.ToInt32(Счетчик.Value);

строки_таблицы2 = 1;(Счетчик.Value == 2)

строки_таблицы1 = 2;

строки_таблицы1 = 3;

}

{.Enabled = true;.Enabled = true;N; double n;= (int)Счетчик.Value;= (double)Счетчик.Value;(N / 2 + 0.5 == n / 2)

{

первая_группа = N / 2 + 1; вторая_группа = N / 2;

}

{

первая_группа = N / 2; вторая_группа = N / 2;

}(int i1 = 1; i1 != первая_группа; i1++)

{

строки_таблицы1 += первая_группа - (первая_группа - i1);

}(int i1 = 1; i1 != вторая_группа; i1++)

{

строки_таблицы2 += вторая_группа - (вторая_группа - i1);

}

{ .Rows[i].HeaderCell.Value = Convert.ToString(i+1);

}(int i = 0; i < вторая_группа; i++)

{.Rows[i].HeaderCell.Value = (i + 1).ToString();

}.SelectedIndex++;

}void Распределение_Click(object sender, EventArgs e)

{

характеристика_команд_группы[] группа1 = new характеристика_команд_группы[первая_группа];

характеристика_команд_группы[] группа2 = new характеристика_команд_группы[вторая_группа];

перестановка[] гру1 = new перестановка[строки_таблицы1];

перестановка[] гру2 = new перестановка[строки_таблицы2];(int i = 0; i < строки_таблицы1; i++) { гру1[i] = new перестановка(); }(int i = 0; i < строки_таблицы2; i++) { гру2[i] = new перестановка(); }(int i = 0; i < первая_группа; i++)

{

группа1[i] = new характеристика_команд_группы();

группа1[i].название = tab2[0, i].Value;

}(int i = 0; i < вторая_группа; i++)

{

группа2[i] = new характеристика_команд_группы();

группа2[i].название = tab4[0, i].Value;

}.Visible = true;.Visible = true;.Visible = true;.Visible = true; j1 = 0, j2 = 0, g = первая_группа - 1, g1 = 1, j11 = 0, индекс1 = 0;(g != 0)

{+= g;(j1 < j11)

{.Rows[j1].HeaderCell.Value = "1-ый круг";

гру1[j1].хозяин = tab1.Rows[j1].Cells[0].Value = группа1[индекс1].название;

гру1[j1].гость = tab1.Rows[j1].Cells[3].Value = группа1[индекс1 + g1].название;++; g1++;

} g1 = 1; g--; индекс1++;

}(int i = 0; i < j1; i++)

{обмен;

обмен = гру1[i].хозяин; гру1[i].хозяин = гру1[i].гость; гру1[i].гость = обмен;

} int же1 = j1;(int i = 0; i < же1; i++)

{.Rows[j1].HeaderCell.Value = "2-ой круг";.Rows[j1].Cells[0].Value = гру1[i].хозяин;.Rows[j1].Cells[3].Value = гру1[i].гость; j1++;

}(вторая_группа > 1)

{= вторая_группа - 1; int j22 = 0, индекс2 = 0; g1 = 1;(g != 0)

{+= g;(j2 < j22)

{.Rows[j2].HeaderCell.Value = "1-ый круг";.Rows[j2].Cells[0].Value = гру2[j2].хозяин = группа2[индекс2].название;.Rows[j2].Cells[3].Value = гру2[j2].гость = группа2[индекс2 + g1].название;++; g1++;

} g1 = 1; g--; индекс2++;

} int же2 = j2;(int i = 0; i < же2; i++)

{.Rows[j2].HeaderCell.Value = "2-ой круг";.Rows[j2].Cells[0].Value = гру2[i].гость;.Rows[j2].Cells[3].Value = гру2[i].хозяин; j2++;

}

}

стр1 = j1; стр2 = j2;

Резгрупповогоэтапа.Visible = true;

}void Резгрупповогоэтапа_Click(object sender, EventArgs e)

{.Visible = false;.Visible = false;.Visible = false;.Visible = false;

Резгрупповогоэтапа.Visible = false;.Columns.Add("Column2", "очки");.Columns.Add("Column2", "очки");.Text = "Результаты игр";.Text = "Результаты игр";

характеристика_команд_группы[] группа1 = new характеристика_команд_группы[первая_группа];

характеристика_команд_группы[] группа2 = new характеристика_команд_группы[вторая_группа];(int i = 0; i < первая_группа; i++)

{

группа1[i] = new характеристика_команд_группы();

группа1[i].название = tab2.Rows[i].Cells[0].Value;

}(int i = 0; i < вторая_группа; i++)

{

группа2[i] = new характеристика_команд_группы();

группа2[i].название = tab4.Rows[i].Cells[0].Value;

}(int i = 0; i < стр1; i++)

{(int x = 0; x < первая_группа; x++)

{(группа1[x].название == tab1.Rows[i].Cells[0].Value)

{(Convert.ToInt32(tab1.Rows[i].Cells[1].Value) == 3)

{

группа1[x].очки += 3; группа1[x].выигранные_партии += 3;

группа1[x].проигранные_партии += Convert.ToInt32(tab1.Rows[i].Cells[2].Value);

}

{

группа1[x].выигранные_партии += Convert.ToInt32(tab1.Rows[i].Cells[1].Value);

группа1[x].проигранные_партии += Convert.ToInt32(tab1.Rows[i].Cells[2].Value);

}

}(группа1[x].название == tab1.Rows[i].Cells[3].Value)

{(Convert.ToInt32(tab1.Rows[i].Cells[2].Value) == 3)

{

группа1[x].очки += 3; группа1[x].выигранные_партии += 3;

группа1[x].победы_в_гостях += 1;

группа1[x].проигранные_партии += Convert.ToInt32(tab1.Rows[i].Cells[1].Value);

}

группа1[x].выигранные_партии += Convert.ToInt32(tab1.Rows[i].Cells[2].Value);

группа1[x].проигранные_партии += Convert.ToInt32(tab1.Rows[i].Cells[1].Value);

}

}

}

}(int i = 0, x1 = 1; i < первая_группа - 1; i++, x1 = i + 1)

{(; x1 < первая_группа; x1++)

{

характеристика_команд_группы обмен = new характеристика_команд_группы();(группа1[i].очки < группа1[x1].очки)

{

обмен = группа1[i]; группа1[i] = группа1[x1]; группа1[x1] = обмен;

}(группа1[i].очки == группа1[x1].очки)

{(группа1[i].выигранные_партии - группа1[i].проигранные_партии < группа1[x1].выигранные_партии

группа1[x1].проигранные_партии)

{

обмен = группа1[i]; группа1[i] = группа1[x1]; группа1[x1] = обмен;

}(группа1[i].выигранные_партии - группа1[i].проигранные_партии == группа1[x1].выигранные_партии

группа1[x1].проигранные_партии)

{(группа1[i].победы_в_гостях < группа1[x1].победы_в_гостях)

{

обмен = группа1[i]; группа1[i] = группа1[x1]; группа1[x1] = обмен;

}(группа1[i].победы_в_гостях == группа1[x1].победы_в_гостях)

{(int индексс = 0; индексс < строки_таблицы1; индексс++)

{(tab1.Rows[индексс].Cells[0].Value == группа1[i].название)

{(tab1.Rows[индексс].Cells[3].Value == группа1[x1].название)

{(Convert.ToInt32(tab1.Rows[индексс].Cells[1].Value) < Convert.ToInt32(tab1.Rows[индексс].Cells[2].Value))

{

обмен = группа1[i]; группа1[i] = группа1[x1]; группа1[x1] = обмен;

}

}

}(tab1.Rows[индексс].Cells[0].Value == группа1[x1].название)

{(tab1.Rows[индексс].Cells[3].Value == группа1[i].название)

{(Convert.ToInt32(tab1.Rows[индексс].Cells[1].Value) > Convert.ToInt32(tab1.Rows[индексс].Cells[2].Value))

{

обмен = группа1[i]; группа1[i] = группа1[x1]; группа1[x1] = обмен;

}

}

}

}

}

}

}

}

}(int i = 0; i < первая_группа; i++)

{.Rows[i].Cells[0].Value = группа1[i].название;.Rows[i].Cells[1].Value = группа1[i].очки;

}(вторая_группа > 1)

{(int i = 0; i < стр2; i++)

{(int x = 0; x < вторая_группа; x++)

{(группа2[x].название == tab3.Rows[i].Cells[0].Value)

{(Convert.ToInt32(tab3.Rows[i].Cells[1].Value) == 3)

{

группа2[x].очки += 3; группа2[x].выигранные_партии += 3;

группа2[x].проигранные_партии += Convert.ToInt32(tab3.Rows[i].Cells[2].Value);

}

{

группа2[x].выигранные_партии += Convert.ToInt32(tab3.Rows[i].Cells[1].Value);

группа2[x].проигранные_партии += Convert.ToInt32(tab3.Rows[i].Cells[2].Value);

}

}(группа2[x].название == tab3.Rows[i].Cells[3].Value)

{(Convert.ToInt32(tab3.Rows[i].Cells[2].Value) == 3)

{

группа2[x].очки += 3; группа2[x].выигранные_партии += 3;

группа2[x].победы_в_гостях += 1;

группа2[x].проигранные_партии += Convert.ToInt32(tab3.Rows[i].Cells[1].Value);

}

{

группа2[x].выигранные_партии += Convert.ToInt32(tab3.Rows[i].Cells[2].Value);

группа2[x].проигранные_партии += Convert.ToInt32(tab3.Rows[i].Cells[1].Value);

}

}

}(int i = 0, x1 = 1; i < вторая_группа - 1; i++, x1 = i + 1)

{(; x1 < вторая_группа; x1++)

{

характеристика_команд_группы обмен = new характеристика_команд_группы();(группа2[i].очки < группа2[x1].очки)

{

обмен = группа2[i]; группа2[i] = группа2[x1]; группа2[x1] = обмен;

}(группа2[i].очки == группа2[x1].очки)

{(группа2[i].выигранные_партии - группа2[i].проигранные_партии < группа2[x1].выигранные_партии - группа2[x1].проигранные_партии)

{

обмен = группа2[i]; группа2[i] = группа2[x1]; группа2[x1] = обмен;

}(группа2[i].выигранные_партии - группа2[i].проигранные_партии == группа2[x1].выигранные_партии - группа2[x1].проигранные_партии)

{(группа2[i].победы_в_гостях < группа2[x1].победы_в_гостях)

{

обмен = группа2[i]; группа2[i] = группа2[x1]; группа2[x1] = обмен;

}(группа2[i].победы_в_гостях == группа2[x1].победы_в_гостях)

{(int ind = 0; ind < строки_таблицы2; ind++)

{(tab3.Rows[ind].Cells[0].Value == группа2[i].название)

{(tab3.Rows[ind].Cells[3].Value == группа2[x1].название)

{(Convert.ToInt32(tab3.Rows[ind].Cells[1].Value) < Convert.ToInt32(tab3.Rows[ind].Cells[2].Value))

{

обмен = группа2[i]; группа2[i] = группа2[x1]; группа2[x1] = обмен;

}

}

}(tab3.Rows[ind].Cells[0].Value == группа2[x1].название)

{(tab3.Rows[ind].Cells[3].Value == группа2[i].название)

{(Convert.ToInt32(tab3.Rows[ind].Cells[1].Value) > Convert.ToInt32(tab3.Rows[ind].Cells[2].Value))

{

обмен = группа2[i]; группа2[i] = группа2[x1]; группа2[x1] = обмен;

}

}

}

}

}

}

}

}

}

}(int i = 0; i < вторая_группа; i++)

{.Rows[i].Cells[0].Value = группа2[i].название;.Rows[i].Cells[1].Value = группа2[i].очки;

}.RowCount = 2;

полуфинал_и_финал[] полуфинал = new полуфинал_и_финал[4];(int i = 0; i < 4; i++)

{

полуфинал[i] = new полуфинал_и_финал();

}(вторая_группа == 1)

{

полуфинал[0].название = tab2.Rows[0].Cells[0].Value;

полуфинал[1].название = tab2.Rows[1].Cells[0].Value;

}

{

полуфинал[0].название = tab2.Rows[0].Cells[0].Value;

полуфинал[1].название = tab2.Rows[1].Cells[0].Value;

полуфинал[2].название = tab4.Rows[0].Cells[0].Value;

полуфинал[3].название = tab4.Rows[1].Cells[0].Value;

}(вторая_группа == 1)

{.RowCount = 1;.Rows[0].HeaderCell.Value = "1 полуфинал";.Rows[0].Cells[0].Value = полуфинал[0].название;.Rows[0].Cells[3].Value = полуфинал[1].название;

}

{.RowCount = 2;.Rows[0].HeaderCell.Value = "1 полуфинал";.Rows[1].HeaderCell.Value = "2 полуфинал";.Rows[0].Cells[0].Value = полуфинал[0].название;.Rows[0].Cells[3].Value = полуфинал[3].название;.Rows[1].Cells[0].Value = полуфинал[1].название;.Rows[1].Cells[3].Value = полуфинал[2].название;

}

}void checkBox1_CheckedChanged(object sender, EventArgs e)

{(checkBox1.CheckState == CheckState.Checked)

{.Visible = true;.Visible = true;.Visible = true;

}

{.Visible = false;.Visible = false;.Visible = false;

}

}void Полуфинал_Click(object sender, EventArgs e)

{

полуфинал_и_финал[] полуфинал = new полуфинал_и_финал[4];.RowCount = 2;.Rows[0].HeaderCell.Value = "1-ая игра";.Rows[1].HeaderCell.Value = "2-ая игра";(int i = 0; i < 4; i++)

{ полуфинал[i] = new полуфинал_и_финал(); }(вторая_группа == 1)

{

полуфинал[0].название = tab5.Rows[0].Cells[0].Value;

}

{

полуфинал[0].название = tab5.Rows[0].Cells[0].Value;

полуфинал[1].название = tab5.Rows[0].Cells[3].Value;(Convert.ToInt32(tab5.Rows[0].Cells[1].Value) > Convert.ToInt32(tab5.Rows[0].Cells[2].Value))

{ полуфинал[0].очки += 3; }{ полуфинал[1].очки += 3; }

полуфинал[2].название = tab5.Rows[1].Cells[0].Value;

полуфинал[3].название = tab5.Rows[1].Cells[3].Value;(Convert.ToInt32(tab5.Rows[1].Cells[2].Value) > Convert.ToInt32(tab5.Rows[1].Cells[2].Value))

{ полуфинал[2].очки += 3; }{ полуфинал[3].очки += 3; }

}(вторая_группа == 1)

{.Rows[0].Cells[0].Value = полуфинал[0].название;.Rows[0].Cells[3].Value = полуфинал[1].название;.Rows[1].Cells[0].Value = полуфинал[1].название;.Rows[1].Cells[3].Value = полуфинал[0].название;

}

{(полуфинал[0].очки < полуфинал[1].очки)

{

полуфинал_и_финал обмен = new полуфинал_и_финал();

обмен = полуфинал[0]; полуфинал[0] = полуфинал[1]; полуфинал[1] = обмен;

}(полуфинал[2].очки < полуфинал[3].очки)

{

полуфинал_и_финал обмен = new полуфинал_и_финал();

обмен = полуфинал[2]; полуфинал[2] = полуфинал[3]; полуфинал[3] = обмен;

}.Rows[0].Cells[0].Value = полуфинал[0].название;.Rows[0].Cells[3].Value = полуфинал[2].название;.Rows[1].Cells[0].Value = полуфинал[2].название;.Rows[1].Cells[3].Value = полуфинал[0].название;

}.SelectedIndex++;

}void Финал_Click(object sender, EventArgs e)

{

полуфинал_и_финал[] финал = new полуфинал_и_финал[2];(int i = 0; i < 2; i++)

{ финал[i] = new полуфинал_и_финал(); }

финал[0].название = tab6.Rows[0].Cells[0].Value;

финал[1].название = tab6.Rows[0].Cells[3].Value;(Convert.ToInt32(tab6.Rows[0].Cells[1].Value) > Convert.ToInt32(tab6.Rows[0].Cells[2].Value))

{

финал[0].очки += 3;

}{ финал[1].очки += 3; }(Convert.ToInt32(tab6.Rows[1].Cells[2].Value) > Convert.ToInt32(tab6.Rows[1].Cells[1].Value))

{ финал[0].очки += 3; }{ финал[1].очки += 3; }(финал[0].очки > финал[1].очки)

{ label10.Text = "ПОБЕДИТЕЛЬ - " + Convert.ToString(финал[0].название) + " - ПОЗДРАВЛЯЕМ!!!"; }{ label10.Text = "ПОБЕДИТЕЛЬ - " + Convert.ToString(финал[1].название) + " - ПОЗДРАВЛЯЕМ!!!"; }(финал[0].очки == финал[1].очки)

{.RowCount = 3;.Text = "необходимо сыграть третий, дополнительный матч";.Rows[2].HeaderCell.Value = "3-ая игра";.Rows[2].Cells[0].Value = финал[0].название;.Rows[2].Cells[3].Value = финал[1].название;.Show("необходимо сыграть третий дополнительный матч. Введите результаты третьей игры и нажмите кнопку <ДОП. МАТЧ>");

Допматч.Visible = true;

}

}void Допматч_Click(object sender, EventArgs e)

{

полуфинал_и_финал[] финал = new полуфинал_и_финал[2];(int i = 0; i < 2; i++)

{ финал[i] = new полуфинал_и_финал(); }

финал[0].название = tab6.Rows[2].Cells[0].Value;

финал[0].очки = Convert.ToInt32(tab6.Rows[2].Cells[1].Value);

финал[1].название = tab6.Rows[2].Cells[3].Value;

финал[1].очки = Convert.ToInt32(tab6.Rows[2].Cells[2].Value);(финал[0].очки > финал[1].очки)

{ label10.Text = "ПОБЕДИТЕЛЬ - " + Convert.ToString(финал[0].название) + " - ПОЗДРАВЛЯЕМ!!!"; }{ label10.Text = "ПОБЕДИТЕЛЬ - " + Convert.ToString(финал[1].название) + " - ПОЗДРАВЛЯЕМ!!!"; }

}

}

}

6.       Контрольный пример

Введем число команд 4


Введем команды: Динамо, Цска, ТТГ, Югра.


Введем счет в играх: Динамо - Цска 3:2, Цска - Динамо 0:3,

ТТГ - Югра 1:3, Югра - ТТГ 3:2.


Результаты группового этапа:


Результаты игр полуфинала:


Результаты игр финала:

Победитель - Динамо


.         Руководство пользователя

1.       На вкладке «Перед чемпионатом» вводим число команд в чемпионате и нажимаем кнопку «ок». Если нужны подсказки, то устанавливаем флажок «Показывать подсказки?»

.         На вкладке «Групповой этап» вводим в соответствующие таблицы команды, участвующие в чемпионате, затем жмем кнопку «распределить по группам»

.         Вводим результаты игр группового этапа и жмем кнопку «Посчитать результаты группового этапа»

.         После просмотра результатов группового этапа переходим на вкладку «Полуфинал»

.         Вводим результаты игр полуфинала и жмем кнопку «Посчитать и перейти в финал»

.         Вводим результаты игр финала и жмем кнопку «Нажмите для просчета финала»

.         Смотрим, кто победил, и закрываем программу.

Список литературы

1)      Павловская Т. А. «C#. Программирование на языке высокого уровня: Учебник для вузов», «Питер», 2007.

2)      С. Бобровский «Технологии С#Builder. Разработка приложений для бизнеса. Учебный курс», «Питер», 2007.

)        Рихтер Дж. «CLR via C#. Программирование на платформе Microsoft .NET Framework 2.0 на языке C#», «Питер», 2007.

Похожие работы на - Компьютерная игра 'Чемпионат по волейболу'

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!