Загрузка данных
Для решения этой задачи (Вариант 7) я сделал отдельную форму. В ней мы не будем вручную вводить данные, а сгенерируем их по формуле из задания с помощью кода, выведем в таблицу и сразу выполним 7-й вариант (поиск пунктов с минимальной и максимальной явкой).
Как сделать в Visual Studio (пошагово):
1. Добавьте в ваш проект новую форму: в обозревателе решений (Solution Explorer) нажмите правой кнопкой на название проекта -> Добавить (Add) -> Форма (Windows Forms) (Form). Назовите её FormVotes (или оставьте Form2).
2. На новой форме разместите элементы:
· dataGridView1 (растяните пошире, чтобы влезло 6 колонок).
· button1 (Текст: "Сгенерировать и решить").
· label1 (Свойство AutoSize = True, поставьте под кнопкой или таблицей, для вывода ответа).
3. Дважды кликните по кнопке button1, чтобы создать событие нажатия, и вставьте туда этот код.
4. Дважды кликните по пустому месту на самой форме (создастся Form_Load), чтобы таблица подготовилась при запуске.
Вот готовый код для этой новой формы:
```csharp
using System;
using System.Windows.Forms;
namespace InsuranceApp
{
public partial class FormVotes : Form
{
int[,] a = new int[6, 5];
public FormVotes()
{
InitializeComponent();
}
private void FormVotes_Load(object sender, EventArgs e)
{
dataGridView1.AllowUserToAddRows = false;
dataGridView1.RowHeadersVisible = false;
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
dataGridView1.Columns.Add("col0", "Пункт");
dataGridView1.Columns.Add("col1", "Кандидат 1");
dataGridView1.Columns.Add("col2", "Кандидат 2");
dataGridView1.Columns.Add("col3", "Кандидат 3");
dataGridView1.Columns.Add("col4", "Кандидат 4");
dataGridView1.Columns.Add("col5", "Кандидат 5");
}
private void button1_Click(object sender, EventArgs e)
{
dataGridView1.Rows.Clear();
label1.Text = "";
Random rnd = new Random();
int p = 7; // Ваш вариант
for (int k = 0; k < 6; k++)
{
object[] rowData = new object[6];
rowData[0] = k + 1; // Номер пункта
for (int n = 0; n < 5; n++)
{
int votes = (rnd.Next(1, 10) * 10 * p) + 50;
a[k, n] = votes;
rowData[n + 1] = votes.ToString();
}
dataGridView1.Rows.Add(rowData);
}
int[] totalVotesInPoint = new int[6];
int maxVotes = -1;
int minVotes = 999999;
string maxPoints = "";
string minPoints = "";
for (int k = 0; k < 6; k++)
{
int sum = 0;
for (int n = 0; n < 5; n++)
{
sum += a[k, n];
}
totalVotesInPoint[k] = sum;
if (sum > maxVotes)
{
maxVotes = sum;
maxPoints = (k + 1).ToString();
}
else if (sum == maxVotes)
{
maxPoints += ", " + (k + 1).ToString();
}
if (sum < minVotes)
{
minVotes = sum;
minPoints = (k + 1).ToString();
}
else if (sum == minVotes)
{
minPoints += ", " + (k + 1).ToString();
}
}
label1.Text = $"Максимальная явка ({maxVotes} голосов) в пунктах: {maxPoints}\n" +
$"Минимальная явка ({minVotes} голосов) в пунктах: {minPoints}";
}
}
}
```
Как проверить работу:
1. Чтобы эта форма открывалась при запуске программы, зайдите в файл Program.cs и замените Application.Run(new Form1()); на Application.Run(new FormVotes()); (или создайте кнопку на главной форме, которая будет её открывать).
2. Запустите программу (F5).
3. Нажмите кнопку "Сгенерировать и решить". Таблица заполнится числами, рассчитанными по формуле из задания, а внизу появится текст с ответом на 7-й вариант.