-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMainWindow.xaml.cs
116 lines (102 loc) · 4.13 KB
/
MainWindow.xaml.cs
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
using System;
using System.Windows;
using ClosedXML.Excel;
namespace Attenuator
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
public void CalculateP(object sender, RoutedEventArgs e)
{
try
{
double Z = double.Parse(input_z.Text);
double R = double.Parse(input_r.Text);
double A = (R-Z)/(R+Z);
double L = -20 * Math.Log10(A);
output.Text = $"Полученный результат L: {L:F3} дБ";
}
catch (Exception ex)
{
output.Text = $"Ошибка: {ex.Message}";
}
}
public void CalculateT(object sender, RoutedEventArgs e)
{
try
{
double Z = double.Parse(input_z.Text);
double K = double.Parse(input_k.Text);
double R1 = Z * (K-1)/(K+1);
double R3 = 2 * Z * (K / (Math.Pow(K,2) - 1));
double L = 20 * Math.Log10(K);
output.Text = $"Полученный результат: \nR1 = R2 = {R1} \nR3 = {R3}\nL = {L}";
}
catch (Exception ex)
{
output.Text = $"Ошибка: {ex.Message}";
}
}
public void SaveToExcel(object sender, RoutedEventArgs e)
{
try
{
using (var workbook = new XLWorkbook())
{
var worksheet = workbook.Worksheets.Add("Расчеты");
worksheet.Cell(1, 1).Value = "Z";
worksheet.Cell(1, 2).Value = "R";
worksheet.Cell(1, 3).Value = "Результат значения L";
int row = 2;
for (int Z = 1; Z <= 1000; Z++)
{
for (int R = 1; R <= 1000; R++)
{
try
{
if (R <= Z)
{
worksheet.Cell(row, 1).Value = Z;
worksheet.Cell(row, 2).Value = R;
worksheet.Cell(row, 3).Value = "Ошибка: R должно быть больше Z.";
row++;
continue;
}
double A = (double)(R - Z) / (R + Z);
if (A <= 0 || A > 1)
{
worksheet.Cell(row, 1).Value = Z;
worksheet.Cell(row, 2).Value = R;
worksheet.Cell(row, 3).Value = "Ошибка: Некорректное значение A.";
row++;
continue;
}
double L = -20 * Math.Log10(A);
worksheet.Cell(row, 1).Value = Z;
worksheet.Cell(row, 2).Value = R;
worksheet.Cell(row, 3).Value = L.ToString("F3") + " дБ";
}
catch
{
worksheet.Cell(row, 1).Value = Z;
worksheet.Cell(row, 2).Value = R;
worksheet.Cell(row, 3).Value = "Ошибка при расчете.";
}
row++;
}
}
string filePath = "Расчеты.xlsx";
workbook.SaveAs(filePath);
output.Text = $"Файл успешно сохранен: {filePath}";
}
}
catch (Exception ex)
{
output.Text = $"Ошибка: {ex.Message}";
}
}
}
}