Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
записка-пояснительная Иноземцев.docx
Скачиваний:
2
Добавлен:
20.09.2019
Размер:
218.8 Кб
Скачать

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

Выбор страны

Ввод

имена участников

выбрана страна и

И имена не равны « »

Что-то не ввели

Нет

Да

Нажатие кнопки добавить жертв

Создает команду с именем выбранной команды

Создает 4 спортсменов с именами введенными и страны им дает из выбранной страны

Созданной команде дает этих 4 спортсменов

Продолжить?

Нет

Да

Выбор страны

Ввод улова спортсмена выбранной страны

Присваивает значения введенные уловам за 1 и 2 дни спортсменам

Всем спорстменам введены уловы?

Нет

Да

Для i 0…колво_спортсменов

Спортсмен[i].уловоб = улов1+улов2

Для i 0…колво_команд

Для j 0… колво_спорт_в_команде

команда[i].улов1 += спорт[j].улов1

команда[i].улов2 += спорт[j].улов2

команда[i].уловоб = улов1+ улов2

i2= 1; i3= 0; i4 = 0;

I2<колво_спортсменов

Нет

Нет

Да

I1= 0; му1= 0;му2 = 0;

I1<колво_спортсменов

Да

Му1< спорт[i1].улов1

Место1 = 0

Да

Нет

Му2< спорт[i1].улов2

Место1 = 0

Му1 = спорт[i1].улов1

I3= i1

Му2 = спорт[i1].улов2

I4= i1

Нет

Да

I1++

Нет

Спорт[i3].mesto1 = i2; спорт[i4].mesto2 = i2; I2++

Алгоритм для спортсменов и команд

Со 2 по 3 повторить

Спорт[i].сумма_мест = место1 +место2

I1 = спорт[0].сумма_мест; i2 = спорт[0].уловоб;

i3 = спорт[0].улов1

спорт[i].сумма_мест = место1 +место2

Да

Нет

I1==спорт[i].сумма_мест

спорт[i].местооб = 1

Алгоритм для спортсменов и команд

Со 3 по 4 повторить

I2 = спорт[i].уловоб

Да

Нет

I2!=спорт[i]. уловоб

спорт[i].местооб = 0

I3 = спорт[i].улов1

Да

Нет

I3!=спорт[i].Улов1

спорт[i].местооб = 0

спорт[i].место1 ==1

Вывод

Спорт[i].imya

спорт[i].место1 ==1

Вывод

Спорт[i].imya

спорт[i].место1 ==1

Вывод

Спорт[i].imya

конец

Алгоритм для спортсменов и команд

Со 4 по 5 повторить

Текст программы

  • Formvvod.cs

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace Рыбалка_курсач

{

public partial class Formvvod : Form

{

public int nst = 0;

public int nsp = 0;

public int spvkom = 4;

TreeNode[] tn;

public komanda[] vsekom;

public sportsmen[] vsespotmens;

public Formvvod()

{

InitializeComponent();

vsekom = new komanda[comboBoxstrani.Items.Count];

for (int p = 0; p < comboBoxstrani.Items.Count; p++)

{

vsekom[p] = new komanda();

vsekom[p].sport = new sportsmen[spvkom];

}

tn = new TreeNode[comboBoxstrani.Items.Count];

vsespotmens = new sportsmen[comboBoxstrani.Items.Count * spvkom];

for (int g = 0; g < comboBoxstrani.Items.Count; g++)

tn[g] = new TreeNode();

}

private void button1_Click(object sender, EventArgs e)

{

textimya1.Text.Trim();

textimya2.Text.Trim();

textimya4.Text.Trim();

textimya5.Text.Trim();

if ((comboBoxstrani.SelectedIndex != -1) && (textimya1.Text != "") && (textimya2.Text != "") && (textimya4.Text != "") && (textimya5.Text != ""))

{

vsekom[nst].strana = comboBoxstrani.SelectedItem.ToString();

vsespotmens[nsp] = new sportsmen(textimya1.Text, comboBoxstrani.SelectedItem.ToString());

vsekom[nst].sport[0] = vsespotmens[nsp];

nsp++;

vsespotmens[nsp] = new sportsmen(textimya2.Text, comboBoxstrani.SelectedItem.ToString());

vsekom[nst].sport[1] = vsespotmens[nsp];

nsp++;

vsespotmens[nsp] = new sportsmen(textimya4.Text, comboBoxstrani.SelectedItem.ToString());

vsekom[nst].sport[2] = vsespotmens[nsp];

nsp++;

vsespotmens[nsp] = new sportsmen(textimya5.Text, comboBoxstrani.SelectedItem.ToString());

vsekom[nst].sport[3] = vsespotmens[nsp];

nsp++;

tn[nst] = treeViewkomandi.Nodes.Add(vsekom[nst].strana);

tn[nst].Nodes.Add(vsekom[nst].sport[0].imya);

tn[nst].Nodes.Add(vsekom[nst].sport[1].imya);

tn[nst].Nodes.Add(vsekom[nst].sport[2].imya);

tn[nst].Nodes.Add(vsekom[nst].sport[3].imya);

nst++;

comboBoxstrani.Items.RemoveAt(comboBoxstrani.SelectedIndex);

textimya1.Clear();

textimya2.Clear();

textimya4.Clear();

textimya5.Clear();

}

else

{

MessageBox.Show("Извините, но вы чтото не сделали. ай-ай-ай");

}

}

private void but_MouseMove(object sender, MouseEventArgs e)

{

but.Image = global::Рыбалка_курсач.Properties.Resources.butup;

}

private void but_Click(object sender, EventArgs e)

{if (nsp > 0)

{

Formsost frm = new Formsost();

frm.Owner = this;

this.Hide();

frm.Show();

}

}

private void Formvvod_FormClosing(object sender, FormClosingEventArgs e)

{

Application.Exit();

}

private void but_MouseLeave(object sender, EventArgs e)

{

but.Image = global::Рыбалка_курсач.Properties.Resources.but;

}

}

public class komanda

{

public string strana;

public int kulov1;

public int kulov2;

public int kulovob;

public int kmesto1;

public int kmesto2;

public int kmestoob;

public int minmestsum;

public sportsmen[] sport;

}

public class sportsmen

{

public string strana;

public string imya;

public int ulov1;

public int ulov2;

public int ulovob;

public int mesto1;

public int mesto2;

public int mestoob;

public int minmestsum;

public sportsmen(string i,string s)

{

imya = i;

strana = s;

}

}

}

  • Formsost

namespace Рыбалка_курсач

{

public partial class Formsost : Form

{

public Formvvod p;

int vce = 0;

public Formsost()

{

InitializeComponent();

}

private void Formsost_Load(object sender, EventArgs e)

{

p = Owner as Formvvod;

for (int i = 0; i < p.nst; i++)

{

comboBoxkomandi.Items.Add(p.vsekom[i].strana);

}

for (int o = 0; o < p.spvkom; o++)

dataGridViewsorev.Rows.Add(' ', ' ', ' ');

comboBoxkomandi.SelectedIndex = 0;

for (int i = 0; i < p.spvkom; i++)

{

dataGridViewsorev[0, i].Value = p.vsekom[comboBoxkomandi.SelectedIndex].sport[i].imya;

dataGridViewsorev[1, i].Value = p.vsekom[comboBoxkomandi.SelectedIndex].sport[i].ulov1;

dataGridViewsorev[2, i].Value = p.vsekom[comboBoxkomandi.SelectedIndex].sport[i].ulov2;

}

}

private void comboBoxkomandi_SelectedIndexChanged(object sender, EventArgs e)

{

if (comboBoxkomandi.SelectedIndex != -1)

{

for (int i = 0; i < p.spvkom; i++)

{

dataGridViewsorev[0, i].Value = p.vsekom[comboBoxkomandi.SelectedIndex].sport[i].imya;

dataGridViewsorev[1, i].Value = p.vsekom[comboBoxkomandi.SelectedIndex].sport[i].ulov1;

dataGridViewsorev[2, i].Value = p.vsekom[comboBoxkomandi.SelectedIndex].sport[i].ulov2;

}

}

}

private void dataGridViewsorev_CellEndEdit(object sender, DataGridViewCellEventArgs e)

{

string str = dataGridViewsorev[e.ColumnIndex, e.RowIndex].Value.ToString();

str.Trim();

if (e.ColumnIndex == 1)

{

p.vsekom[comboBoxkomandi.SelectedIndex].sport[dataGridViewsorev.CurrentRow.Index].ulov1 = int.Parse(str);

vce++;

}

else if (e.ColumnIndex == 2)

{

p.vsekom[comboBoxkomandi.SelectedIndex].sport[dataGridViewsorev.CurrentRow.Index].ulov2 = int.Parse(str);

vce++;

}

if (vce == p.nsp * 2)

{

buttonrez.Visible = true;

buttonrez.Focus();

}

dataGridViewsorev[e.ColumnIndex, e.RowIndex].Value = str;

}

private void buttonrez_Click(object sender, EventArgs e)

{

Formrez frm2 = new Formrez();

frm2.Owner = this;

frm2.Show();

buttonrez.Visible = false;

}

private void Formsost_FormClosing(object sender, FormClosingEventArgs e)

{

Application.Exit();

}

private void dataGridViewsorev_KeyPress(object sender, KeyPressEventArgs e)

{

if (!char.IsDigit(e.KeyChar))

e.Handled = true;

}

private void dataGridViewsorev_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)

{

e.Control.KeyPress += dataGridViewsorev_KeyPress;

}

}

}

  • Formrez

namespace Рыбалка_курсач

{

public partial class Formrez : Form

{

public Formsost r;

public Formrez()

{

InitializeComponent();

}

private void Formrez_Load(object sender, EventArgs e)

{

r = Owner as Formsost;

//MessageBox.Show(r.p.nst.ToString());

dataGridViewrez.Rows.Add("личный зачет");

dataGridViewrez.Rows.Add("командный зачет");

for (int p = 0; p < r.p.nsp; p++)

r.p.vsespotmens[p].ulovob = r.p.vsespotmens[p].ulov1 + r.p.vsespotmens[p].ulov2;

for (int i = 0; i < r.p.nst; i++)

for (int k = 0; k < r.p.spvkom; k++)

{

r.p.vsekom[i].kulov1 += r.p.vsekom[i].sport[k].ulov1;

r.p.vsekom[i].kulov2 += r.p.vsekom[i].sport[k].ulov2;

r.p.vsekom[i].kulovob += r.p.vsekom[i].sport[k].ulovob;

}

int i1;

int i2 = 1;

int i3 = 0;

int ob;

//спортсмены

while (i2 < r.p.nsp+1)

{

ob = 0;

i1 = 0;

while (i1 < r.p.nsp)

{

if (ob < r.p.vsespotmens[i1].ulov1 && r.p.vsespotmens[i1].mesto1 == 0)

{

i3 = i1;

ob = r.p.vsespotmens[i1].ulov1;

}

i1++;

}

r.p.vsespotmens[i3].mesto1 = i2;

i2++;

}

i2 = 1;

i3 = 0;

while (i2 < r.p.nsp + 1)

{

ob = 0;

i1 = 0;

while (i1 < r.p.nsp)

{

if (ob < r.p.vsespotmens[i1].ulov2 && r.p.vsespotmens[i1].mesto2 == 0)

{

i3 = i1;

ob = r.p.vsespotmens[i1].ulov2;

}

i1++;

}

r.p.vsespotmens[i3].mesto2 = i2;

i2++;

}

// команда

//Первый день

i2 = 1;

i3 = 0;

while (i2 < r.p.nst + 1)

{

ob = 0;

i1 = 0;

while (i1 < r.p.nst)

{

if (ob < r.p.vsekom[i1].kulov1 && r.p.vsekom[i1].kmesto1 == 0)

{

i3 = i1;

ob = r.p.vsekom[i1].kulov1;

}

i1++;

}

r.p.vsekom[i3].kmesto1 = i2;

i2++;

}

//второй день

i2 = 1;

i3 = 0;

while (i2 < r.p.nst + 1)

{

ob = 0;

i1 = 0;

while (i1 < r.p.nst)

{

if (ob < r.p.vsekom[i1].kulov2 && r.p.vsekom[i1].kmesto2 == 0)

{

i3 = i1;

ob = r.p.vsekom[i1].kulov2;

}

i1++;

}

r.p.vsekom[i3].kmesto2 = i2;

i2++;

}

// минимальная сумма мест за два дня

for (int p = 0; p < r.p.nsp; p++)

r.p.vsespotmens[p].minmestsum = r.p.vsespotmens[p].mesto1 + r.p.vsespotmens[p].mesto2;

for (int i = 0; i < r.p.nst; i++)

r.p.vsekom[i].minmestsum = r.p.vsekom[i].kmesto1 + r.p.vsekom[i].kmesto1;

//нахождение 1 в общем зачете по спортсменам

i1 = r.p.vsespotmens[0].minmestsum;

i2 = r.p.vsespotmens[0].ulovob;

i3 = r.p.vsespotmens[0].ulov1;

// поиск минимальной суммы

for (int p = 0; p < r.p.nsp; p++)

{

if (i1 > r.p.vsespotmens[p].minmestsum)

i1 = r.p.vsespotmens[p].minmestsum;

}

//всем с минимальной 1 место

for (int p = 0; p < r.p.nsp; p++)

if (i1 == r.p.vsespotmens[p].minmestsum)

{

r.p.vsespotmens[p].mestoob = 1;

}

//поиск максимального улова общего у спортов с первым местом

for (int p = 0; p < r.p.nsp; p++)

if (i2 < r.p.vsespotmens[p].ulovob && r.p.vsespotmens[p].mestoob == 1)

i2 = r.p.vsespotmens[p].ulovob;

// все с первым местом у кого максимальное общего улова остаются

for (int p = 0; p < r.p.nsp; p++)

if (i2 != r.p.vsespotmens[p].ulovob && r.p.vsespotmens[p].mestoob == 1)

{

r.p.vsespotmens[p].mestoob = 0;

}

// поиск максимального улова за первый день из тех у кого первое место

for (int p = 0; p < r.p.nsp; p++)

{

if (i3 < r.p.vsespotmens[p].ulov1 && r.p.vsespotmens[p].mestoob == 1)

i3 = r.p.vsespotmens[p].ulov1;

}

// все кто прошли и это испытание оставляют первое место

for (int p = 0; p < r.p.nsp; p++)

{

if (i3 != r.p.vsespotmens[p].ulov1 && r.p.vsespotmens[p].mestoob == 1)

r.p.vsespotmens[p].mestoob = 0;

}

//нахождение 1 в общем зачете по странам

i1 = r.p.vsekom[0].minmestsum;

i2 = r.p.vsekom[0].kulovob;

i3 = r.p.vsekom[0].kulov1;

// поиск минимальной суммы

for (int p = 0; p < r.p.nst; p++)

{

if (i1 > r.p.vsekom[p].minmestsum)

i1 = r.p.vsekom[p].minmestsum;

}

//всем с минимальной 1 место

for (int p = 0; p < r.p.nst; p++)

if (i1 == r.p.vsekom[p].minmestsum)

{

r.p.vsekom[p].kmestoob = 1;

}

//поиск максимального улова общего у спортов с первым местом

for (int p = 0; p < r.p.nst; p++)

if (i2 < r.p.vsekom[p].kulovob && r.p.vsekom[p].kmestoob == 1)

i2 = r.p.vsekom[p].kulovob;

// все с первым местом у кого максимальное общего улова остаются

for (int p = 0; p < r.p.nst; p++)

if (i2 != r.p.vsekom[p].kulovob && r.p.vsekom[p].kmestoob == 1)

{

r.p.vsekom[p].kmestoob = 0;

}

// поиск максимального улова за первый день из тех у кого первое место

for (int p = 0; p < r.p.nst; p++)

{

if (i3 < r.p.vsekom[p].kulov1 && r.p.vsekom[p].kmestoob == 1)

i3 = r.p.vsekom[p].kulov1;

}

// все кто прошли и это испытание оставляют первое место

for (int p = 0; p < r.p.nst; p++)

{

if (i3 != r.p.vsekom[p].kulov1 && r.p.vsekom[p].kmestoob == 1)

r.p.vsekom[p].kmestoob = 0;

}

//таблица

// личный 1 день

dataGridViewrez.RowCount =2;

for (int i = 0; i < r.p.nsp; i++)

if (r.p.vsespotmens[i].mesto1 == 1)

{

dataGridViewrez[1, 0].Value = r.p.vsespotmens[i].imya.ToString() + "(" + r.p.vsespotmens[i].strana.ToString() + ")";

}

//личный 2 день

for (int i = 0; i < r.p.nsp; i++)

if (r.p.vsespotmens[i].mesto2 == 1)

{

dataGridViewrez[2, 0].Value = r.p.vsespotmens[i].imya.ToString() + "(" + r.p.vsespotmens[i].strana.ToString() + ")";

}

//команды 1 день

for (int i = 0; i < r.p.nst; i++)

if (r.p.vsekom[i].kmesto1 == 1)

{

dataGridViewrez[1, 1].Value = r.p.vsekom[i].strana.ToString() + ":" + r.p.vsekom[i].kulov1;

}

//командный 2 день }

for (int i = 0; i < r.p.nst; i++)

if (r.p.vsekom[i].kmesto2 == 1)

{

dataGridViewrez[2, 1].Value = r.p.vsekom[i].strana.ToString() + ":" + r.p.vsekom[i].kulov2;

}

//личный общий

for (int i = 0; i < r.p.nsp; i++)

if (r.p.vsespotmens[i].mestoob == 1)

{

dataGridViewrez[3, 0].Value = r.p.vsespotmens[i].imya.ToString() + "(" + r.p.vsespotmens[i].strana.ToString() + ")";

}

// командный общий

for (int i = 0; i < r.p.nst; i++)

if (r.p.vsekom[i].kmestoob == 1)

{

dataGridViewrez[3, 1].Value = r.p.vsekom[i].strana.ToString();

}

}

}