
- •Навчальної практики
- •Задача 2
- •Перевизначення методу Len() з урахуванням способу завдання вектора,
- •Код програми
- •Задача 7
- •Код програми
- •Результат роботи програми:
- •Задача 8
- •Код програми
- •Результат роботи програми:
- •Задача 10
- •Код програми
- •Результат роботи програми:
- •Задача 14
- •Код програми
- •Результат роботи програми:
- •Задача 15
- •Код програми
- •Результат роботи програми:
- •Задача 17
- •Код програми
- •Результат роботи програми:
Результат роботи програми:
Рис. 14. Діалогова форма, на якій зображено декілька кіл, що рухаються
Задача 17
Мовою C# розробити приклад програми з застосуванням делегатів:
Створити клас «Депозит», поля якого тільки такі:
внесок - початковий розмір внеску (у гривнях),
накопичення (у гривнях) - кількість грошей, отримана додатково до внеску в результаті нарахування відсотків,
відсотки по внеску (%) - відносна величина, на яку збільшується сума наприкінці кожного періоду.
Ці величини задаються аргументами конструктора. Крім цього через конструктор передається функція розрахунку накопичення по відсотках.
Запрограмувати в цьому класі функцію «Нарахувати відсотки за черговий період», що використовує функцію зміни розміру накопичення, передану через конструктор.
Створити клас «Вид внеску», що містить двох функцій для розрахунку накопичення по відсотках:
прості відсотки – нараховуються на початковий внесок та додаються до накопичення .
складні відсотки – нараховуються на суму внеску і поточного накопичення та додаються до накопичення.
Створити діалогову форму, що містить тільки:
Два об'єкти класу «Депозит», по першому нараховуються прості відсотки, а по другому – складні.
Поле для введення розміру внеску,
Поле для введення величини відсотків,
Поле, що не редагується, для відображення поточного розміру накопичення при простих відсотках,
Поле, що не редагується, для відображення поточного розміру накопичення при складних відсотках,
Кнопку для нарахування відсотків. Її натискання здійснює чергове нарахування відсотків для обох об'єктів, з відображенням результатів у відповідних полях форми.
Перевірити роботу складеної програми.
Код програми
using System;
using System.Windows.Forms;
namespace Num_8
{
public partial class Form1 : Form
{
private Deposit _d1, _d2;
private readonly DepositPaymentType _type;
public Form1()
{
InitializeComponent();
_type = new DepositPaymentType();
}
private void button1_Click(object sender, EventArgs e)
{
try
{
if (_d1 == null || _d2 == null)
{
_d1 = new Deposit(double.Parse(textBox1.Text), double.Parse(textBox2.Text), _type.SimplePercent);
_d2 = new Deposit(double.Parse(textBox1.Text), double.Parse(textBox2.Text), _type.ComplexPercent);
}
_d1.GetAccrual();
_d2.GetAccrual();
textBox3.Text = String.Format("{0:0.00}", _d1.Accrual);
textBox4.Text = String.Format("{0:0.00}", _d2.Accrual);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
public delegate double GetAccrualByPercent(double d, double a, double p);
public class Deposit
{
private readonly GetAccrualByPercent _del;
public Deposit(double d, double p, GetAccrualByPercent getAccrualByPercent)
{
DepositPayment = d;
Percent = p;
_del = getAccrualByPercent;
}
public double DepositPayment { get; set; }
public double Accrual { get; set; }
public double Percent { get; set; }
public void GetAccrual()
{
Accrual = _del(DepositPayment, Accrual, Percent);
}
}
public class DepositPaymentType
{
public double SimplePercent(double d, double a, double p)
{
a += d*p/100;
return a;
}
public double ComplexPercent(double d, double a, double p)
{
a += (a + d)*p/100;
return a;
}
}
}