
- •Навчальної практики
- •Задача 2
- •Перевизначення методу Len() з урахуванням способу завдання вектора,
- •Код програми
- •Задача 7
- •Код програми
- •Результат роботи програми:
- •Задача 8
- •Код програми
- •Результат роботи програми:
- •Задача 10
- •Код програми
- •Результат роботи програми:
- •Задача 14
- •Код програми
- •Результат роботи програми:
- •Задача 15
- •Код програми
- •Результат роботи програми:
- •Задача 17
- •Код програми
- •Результат роботи програми:
Результат роботи програми:
Рис. 8. Форма вводу даних
Рис. 9. Програма перевіряє виконання вказаних функцій.
Задача 10
Мовою C# розробити діалогову програму з графічним інтерфейсом:
Створити базовий клас «квадрат», що відображається у вікні форми.
Створити діалогову форму з трьома кнопками.
Натискання першої кнопки в перший раз створює новий об'єкт «квадрат» з центром у середині вікна і з периметром 4 см. Кожне наступне натискання створює новий квадрат з центром у середині вікна і з периметром у 1,2 рази більше попереднього. Перший квадрат від початку вважається обраним і зображується червоним кольором, наступні - синім.
Натискання другої кнопки дозволяє обрати наступний квадрат. Він стає червоним, а попередній, відповідно, синім.
Натискання третьої кнопки видаляє обраний квадрат з пам'яті і стирає його зображення з екрану. При цьому наступний за ним квадрат стає обраним.
Перевірити роботу складеної програми.
Код програми
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;
namespace Num_5
{
public partial class Form1 : Form
{
private readonly Graphics _graphics;
private const int CenterX = 250;
private const int CenterY = 250;
private List<Square> _squares = new List<Square>();
public Form1()
{
InitializeComponent();
FormBorderStyle = FormBorderStyle.FixedSingle;
_graphics = CreateGraphics();
_graphics.Clear(Color.White);
}
private void AddSquare()
{
if (_squares.Count == 15 || _squares.Any(x => x.W >= 490)) return;
Square sq;
if (_squares.Any())
{
var max = _squares.OrderByDescending(x => x.W).First().W;
sq = new Square(max) {IsSelected = false};
}
else sq = new Square {IsSelected = true};
_squares.Add(sq);
Draw(sq);
_squares = _squares.OrderByDescending(x => x.W).ToList();
}
private void Draw(Square sq)
{
var rectangle = new Rectangle(sq.X, sq.Y, sq.W, sq.W);
_graphics.DrawRectangle(sq.IsSelected ? Pens.Red : Pens.Blue, rectangle);
}
private void Select(bool isPrev = false)
{
_squares = _squares.OrderByDescending(x => x.W).ToList();
var selectedIndex = _squares.IndexOf(_squares.First(x => x.IsSelected));
if ((isPrev && selectedIndex == _squares.Count - 1) || (!isPrev && selectedIndex == 0)) return;
_squares.First(x => x.IsSelected).IsSelected = false;
var nextIndex = isPrev ? selectedIndex + 1 : selectedIndex - 1;
_squares.ElementAt(nextIndex).IsSelected = true;
_graphics.Clear(Color.White);
foreach (var sq in _squares)
{
Draw(sq);
}
}
private void button1_Click(object sender, EventArgs e)
{
AddSquare();
}
private void button2_Click(object sender, EventArgs e)
{
if (!_squares.Any()) return;
var selected = _squares.First(x => x.IsSelected);
var selectedIndex = _squares.IndexOf(_squares.First(x => x.IsSelected));
var nextIndex = selectedIndex == 0 ? 0 : selectedIndex - 1;
_squares.Remove(selected);
_squares.ElementAt(nextIndex).IsSelected = true;
_graphics.Clear(Color.White);
foreach (var sq in _squares)
{
Draw(sq);
}
}
private void button3_Click(object sender, EventArgs e)
{
Select();
}
private void button4_Click(object sender, EventArgs e)
{
Select(true);
}
public class Square
{
public Square(int? w = null)
{
W = (int)(w.HasValue ? 1.2 * w.Value : 40.0);
}
public int W { get; set; }
public int X
{
get { return (int)(CenterX - (W / 2.0)); }
}
public int Y
{
get { return (int)(CenterY - (W / 2.0)); }
}
public bool IsSelected { get; set; }
}
}
}