using System using System Collections Generic using System ComponentMo

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
bool a = false, b = false;
public Form1()
{
InitializeComponent();
}
private void panel2_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
int xc = panel2.Width / 2; //новый центр координат оси X
int yc = panel2.Height / 2; //новый центр координат оси Y
g.TranslateTransform(xc, yc);
// Рисуем оси
g.DrawLine(new Pen(Color.Black, 1.0f), -xc, 0, yc, 0);
g.DrawLine(new Pen(Color.Black, 1.0f), 0, -xc, 0, yc);
int R = 0;// Строим главную окружность
if (a)
R = main_circle(g);
int p = 0;// Объявляем счётчик, подсчитывающий количесво окружностей пересекающих главную
if (b)// Строим окружности, одновременно определяя, пересекает ли она главную
p = circle(g, R);
label9.Text = p.ToString();
}
public int main_circle( Graphics g ) // Функция построения главной окружности
{
int r = int.Parse(textBox1.Text);
g.DrawEllipse(new Pen(Color.Red, 2.0f), -r * 5, -r * 5, r * 10, r * 10);
return r;
}
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
}
private void button1_Click(object sender, EventArgs e) // Кнопка, запускающая построение главной окружности
{
a = true;
button2.Enabled = true;
Refresh();
}
public int circle (Graphics g, int R) // Функция построения окружностей, одновременно проверяющая наличие пересечения с главной
{
int p = 0;
for (int rows = 0; rows < dataGridView1.Rows.Count - 1; rows++)
{
int x, y, r;
x = int.Parse(dataGridView1.Rows[rows].Cells[0].Value.ToString());
y = int.Parse(dataGridView1.Rows[rows].Cells[1].Value.ToString());
r = int.Parse(dataGridView1.Rows[rows].Cells[2].Value.ToString());
g.DrawEllipse(new Pen(Color.Blue, 1.0f), (x - r)*5, ( -y - r)*5, r*10, r*10 );
if ((x + y) * (x + y) <= (R + r) * (R + r) && (x + y) * (x + y) >= (R - r) * (R - r) )
p++;
}
return p;
}
private void button2_Click(object sender, EventArgs e) // Кнопка, запускающая построение окружностей и подсчёт количесва пересечений с главной
{
b = true;
Refresh();
}
}
}