
- •Навчальної практики
- •Задача 2
- •Перевизначення методу Len() з урахуванням способу завдання вектора,
- •Код програми
- •Задача 7
- •Код програми
- •Результат роботи програми:
- •Задача 8
- •Код програми
- •Результат роботи програми:
- •Задача 10
- •Код програми
- •Результат роботи програми:
- •Задача 14
- •Код програми
- •Результат роботи програми:
- •Задача 15
- •Код програми
- •Результат роботи програми:
- •Задача 17
- •Код програми
- •Результат роботи програми:
Результат роботи програми:
Рис. 4. Форма вводу даних
Рис. 5. Програма перевіряє виконання вказаних функцій.
Задача 8
Мовою C# розробити приклад виконання операцій над об'єктами:
Створити базовий клас «Резистор», поля якого тільки такі:
опір R, Ом.
Забезпечити можливість обчислення виразів над об'єктами цього класу.
Операція «+» відповідає послідовному з’єднанню об'єктів. У результаті утворюється новий об'єкт класу «Резистор» із сумарним опором R=R1+R2.
Операція «*» множення на константу n еквівалентна послідовному з'єднанню n однакових резисторів.
Скласти програму, що перевіряє виконання цих операцій шляхом створення декількох резисторів з різними параметрами, програмування схеми їхнього з'єднання і розрахунку струму, що протікає, по формулі I=U/R при заданій напрузі U.
Код програми
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 Num_4
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
try
{
if (String.IsNullOrEmpty(textBox1.Text))
{
MessageBox.Show("Задайте напряжение");
}
if (dataGridView1.Rows.Count > 0)
{
Resistor resistorSum = null;
for (var j = 0; j < dataGridView1.Rows.Count; j++)
{
var row = dataGridView1.Rows[j];
if (row.Cells["R"].Value != null && row.Cells["Count"].Value != null)
{
var tmpResistor = new Resistor
{
R = double.Parse(row.Cells["R"].Value.ToString())
} * int.Parse(row.Cells["Count"].Value.ToString());
if (resistorSum == null) resistorSum = tmpResistor;
else resistorSum = resistorSum + tmpResistor;
}
}
if (resistorSum != null)
{
try
{
var i = double.Parse(textBox1.Text) / resistorSum.R;
textBox2.Text = String.Format("{0:0.00}", resistorSum.R);
textBox3.Text = String.Format("{0:0.00}", i);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
else
{
MessageBox.Show("Необходимо ввести параметры хотя бы одного резистора");
}
}
else
{
MessageBox.Show("Необходимо ввести параметры хотя бы одного резистора");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
public class Resistor
{
public double R { get; set; }
public static Resistor operator +(Resistor ResistorObj1, Resistor ResistorObj2)
{
return new Resistor
{
R = ResistorObj1.R + ResistorObj2.R
};
}
public static Resistor operator *(Resistor ResistorObj1, int n)
{
return new Resistor
{
R = ResistorObj1.R * n
};
}
}
}