Домашнее задание#
- Согласно вашему номеру по списку реализуйте графическое приложение со следующими характеристиками: (см. Методические указания по реализации кода)
- Создайте экран 500 на 500 пикселей
- Отрисуйте 10 ячеек (размер ячейчки 50 на 50 пикселей)
-
Разработайте алгоритм с использованием цикла for для закрашивания ячеек, согласно вашему варианту
-
Отчет оформите в Word файле формата *.doc или *.docx
Стурктура отчета:
- Титульный лист, офрмленный согласно шаблону. Лабораторная работа №3 "Разработка графического приложения с использованием циклов"
- Номер задания. Добавляете рисунок по вашему варианту из таблицы ниже.
- Даете ссылку на Гитхаб. Прикладываете скрин реализации (работающего интерфейса).
- Листинг 1 с фрагментом кода прилоежния, где описывается логика выбора ячеек (цикл for)
Подготовьтесь к защите проекта.
Ход выполнения#
Методические указания по определению ячеек#
Рассмотрим подробно основные свойства элементов матриц. Для этого введем индексы i и j для обозначения строки и столбца.
Индексирование начнем с элементы (0,0) до (N, N) элемента.
Главная диагональ проходит через элементы, у которых номер строки совпадает с номером столбца:
i = j
Пример для матрицы размерности 5x5:
1 | 2 | 3 | 4 | 5 | |
---|---|---|---|---|---|
1 | 1,1 | ||||
2 | 2,2 | ||||
3 | 3,3 | ||||
4 | 4,4 | ||||
5 | 5,5 |
Побочная диагональ проходит через элементы, у которых сумма индексов строки и столбца равна размерности матрицы плюс один:
i + j = n + 1
Пример:
1 | 2 | 3 | 4 | 5 | |
---|---|---|---|---|---|
1 | 1,5 | ||||
2 | 2,4 | ||||
3 | 3,3 | ||||
4 | 4,2 | ||||
5 | 5,1 |
Диагонали, параллельные главной, подчиняются правилу:
i - j = p
где p
— смещение относительно главной диагонали.
Пример для диагонали выше главной диагонали (p = -1
):
1 | 2 | 3 | 4 | 5 | |
---|---|---|---|---|---|
1 | 1,2 | ||||
2 | 2,3 | ||||
3 | 3,4 | ||||
4 | 4,5 | ||||
5 |
Диагонали параллельны побочной, если соблюдается следующее:
i + j = p + k
где p
— смещение относительно побочной диагонали, а k
— константа.
Пример диагонали со смещением p = 1
:
i + j = 7 (i + j = n + 1 + p)
1 | 2 | 3 | 4 | 5 | |
---|---|---|---|---|---|
1 | 1,4 | ||||
2 | 2,3 | ||||
3 | 3,2 | ||||
4 | 4,1 | ||||
5 |
Чтобы выводить "области" достаточно сделать неравенства, заменив = на < или > (>=, <=)
Например, элементы над главной диагональю подчиняются неравенству:
i < j
Пример для матрицы 5x5:
1 | 2 | 3 | 4 | 5 | |
---|---|---|---|---|---|
1 | 1,2 | 1,3 | 1,4 | 1,5 | |
2 | 2,3 | 2,4 | 2,5 | ||
3 | 3,4 | 3,5 | |||
4 | 4,5 | ||||
5 |
Пример реализации кода (без графического интерфейса)#
#include <iostream>
using namespace std;
int main() {
int n = 5; // размерность матрицы
// Главная диагональ
cout << "Главная диагональ: " << endl;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (i == j) {
cout << "(" << i + 1 << ", " << j + 1 << ") ";
}
}
}
cout << endl << endl;
// Побочная диагональ
cout << "Побочная диагональ: " << endl;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (i + j == n - 1) {
cout << "(" << i + 1 << ", " << j + 1 << ") ";
}
}
}
cout << endl << endl;
// Над главной диагональю (i < j)
cout << "Элементы над главной диагональю: " << endl;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (i < j) {
cout << "(" << i + 1 << ", " << j + 1 << ") ";
}
}
}
cout << endl << endl;
return 0;
}
Варианты#
Вариант | Матрицы |
---|---|
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 |