- •1А. Побудова проекту додатка без майстра.
- •1Б. Побудова windows-додаткa за допомогою майстра
- •2. Розробка windows-додатку з діалоговим вікном
- •3.Програмування простих арифметичних виразів
- •Завдання до лабораторної роботи:
- •4.Створення файлів даних
- •Void cMyAppView::OnDraw(cdc* pDc)
- •Використання постійних наборів даних. Серіалізація
- •Void cLab6View::OnChar(uint nChar, uint nRepCnt, uint nFlags)
- •6.Робота з клавіатурою та мишою.
- •Void cLab6View::OnChar(uint nChar, uint nRepCnt, uint nFlags)
- •Void cLab6View::OnDraw(cdc* pDc)
- •Void cCenteredView::OnDraw(cdc* pDc)
- •Void cLab6View::OnDraw(cdc* pDc)
- •Void cLab6View::OnDraw(cdc* pDc)
- •If(!CaretCreated)
- •Void cLab6View::OnKillFocus(cWnd* pNewWnd)
- •Void cLab6View::OnSetFocus(cWnd* pOldWnd)
- •7.Обробка текстових даних.
- •Void cTextView::OnDraw(cdc* pDc)
- •8.Обробка одномірних масивів.
- •Void cMasView::OnDraw(cdc* pDc)
- •Void cMasView::OnDraw(cdc* pDc)
- •Void cMasView::OnDraw(cdc* pDc)
- •Void cMasView::OnDraw(cdc* pDc)
- •9. Обробка двомірних масивів.
- •Void cMasView::OnDraw(cdc* pDc)
- •Void cMasView::OnDraw(cdc* pDc)
- •10. Функції. Перевантаження та шаблони функцій.
- •Додаток1.Пояснення архітектури документ/облік
- •Додаток2.Аналіз коду, створеного майстром у lab4
- •MainFrm.H и MainFrm.Cpp
- •Lab4View.H та lab4View.Cpp
- •Список літератури
Void cMasView::OnDraw(cdc* pDc)
{ CMasDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CString s,s1; int L1=80,k1=0;
int m1[2][3]={1,4,3,6,5,7};
for(int i=0;i<2;i++)
{ for (int j=0;j<3;j++){s.Format("%d ",m1[i][j]);
pDC->TextOut(L+k,L1,s);k+=40;}L1+=40;k=0;
s1.Format(" ");pDC->TextOut(L,L1,s1);}
}
Друкування елементів масиву за допомогою вказівників:
Void cMasView::OnDraw(cdc* pDc)
{ CMasDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CString s,s1; int L1=80,k1=0;
int m1[2][3]={1,4,3,6,5,7};int *pm1[2];
for(int i=0;i<2;i++)
{pm1[i]=&m1[i][0];
for (int j=0;j<3;j++){s.Format("%d ",*(pm1[i]+j));
pDC->TextOut(L+k,L1,s);k+=40;}L1+=40;k=0;
s1.Format(" ");pDC->TextOut(L,L1,s1);}
}
Завдання до лабораторної роботи.
Написати та відладити текст програми для вирішення завдання за варіантом – 15 балів
Можна не створювати ресурсів - будувати меню та діалогове вікно.
10. Функції. Перевантаження та шаблони функцій.
(4 години, 2 заняття)
Варіанти завдань до лабораторної роботи.
Варіант завдання |
Умови задачі |
Примітки |
|
||
1 |
Обчислити корені квадратних рівнянь
|
Всі корені є дійсними |
|
||
2 |
Підрахувати кількість точок, які розташовані всередині кола радіусом r та центром на початку координат; координати точок задані масивами Х(100), Y(100) |
Відстань точки від початку координат обчислювати у допоміжному алгоритмії |
|
||
3 |
Визначити периметри трикутників, що задані координатами їх вершин
|
Довжину сторони трикутників обчислювати у допоміжному алгоритмі |
|
||
4 |
Підрахувати кількість точок, які знаходяться всередині кола радіусом r з центром у точці з координатами (1,1); координати задані масивами Х(80), Y(80) |
Відстань точки від центра кола визначати у допоміжному алгоритмі |
|
||
5 |
Обчислити
|
v1, v2, v3 обчислювати у допоміжному алгоритмії |
|
||
6 |
Обчислити суми додатніх елементів масивів X(N),Y(M),Z(K) |
|
|
||
7 |
Обчислити середнє арифметичне додатніх елементів для масивів A(N1),B(N2),C(N3) |
|
|
||
8 |
Підрахувати кількість елементів матриць X(10,15) та Y(20,12), що задовольняють умовам
|
немає |
|
||
9 |
Обчислити суми додатніх елементів кожного рядка для матриць А(10,12) та В(15,10)
|
немає |
|
||
10 |
Обчислити
|
немає |
|
||
11 |
Обчислити суми елементів головних діагоналей матриць A(N,N), B(M,M) |
|
|
||
12 |
Обчислити
|
Обидві суми обчислювати у одному допоміжному алгоритмі |
|
||
13 |
Підрахувати кількість нульових елементів для матриць А(N,M) та В(M,N) |
|
|
||
14 |
Обчислити суми елементів нижніх трикутних матриць для матриць А(15,15) та В(20,20) |
нема |
|
||
15 |
Визначити кількість додатніх елементів до першого від’ємного у масивах Х(40), Y(50), Z(N) |
|
|||
Приклади вирішення завдань
1. функція розташована перед програмою, яка її викликає;
int fsum(int d[],int n){int s=0;for(int i=0;i<n;i++)s+=d[i];return s;}
void CFuncView::OnDraw(CDC* pDC)
{
CFuncDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
int m[4]={1,4,3,9};
int sum=fsum(m,4);
CString s;
s.Format("sum=%d",sum); pDC->TextOut(10,20,s);
// TODO: add draw code for native data here
}
2. функція розташована після програми, яка її викликає;
int fsum(int d[],int n);//прототип функції – попереднє оголошення
void CFuncView::OnDraw(CDC* pDC)
{
CFuncDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
int m[4]={1,4,3,9};
int sum=fsum(m,4);
CString s;
s.Format("sum=%d",sum); pDC->TextOut(10,20,s);
// TODO: add draw code for native data here
}
int fsum(int d[],int n){int s=0;for(int i=0;i<n;i++)s+=d[i];return s;}
2. функція розташована в окремому файлі з іменем fsum.h:
2a. створити файл такого вмісту:
int fsum(int d[],int n)
{int s=0;for(int i=0;i<n;i++)s+=d[i];return s;}
2б. зберегти його під іменем, наприклад. fsum.h та відкомпілювати.
2в. приєднати до файлу Lab10View:
#include “fsum.h”
2г. викликати функцію для виконання:
void CFuncView::OnDraw(CDC* pDC)
{
CFuncDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
int m[4]={1,4,3,9};
int sum=fsum(m,4); //виклик функції
CString s;
s.Format("sum=%d",sum); pDC->TextOut(10,20,s);
// TODO: add draw code for native data here
}
3.Якщо масив міститиме дійсні значення, потрібно перевантажити функцію (за варіантом 2г):
3а.вміст файлу fsum.h буде таким:
int fsum(int d[],int n){int s=0;for(int i=0;i<n;i++)s+=d[i];return s;}
double fsum(double d[],int n){double s=0;for(int i=0;i<n;i++)s+=d[i];return s;}
3б.у функції void CFuncView::OnDraw(CDC* pDC) передбачити наявність масиву дійсних чисел:
void CFuncView::OnDraw(CDC* pDC)
{
CFuncDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
int m[4]={1,4,3,9};
int sum=fsum(m,4); //виклик функції
CString s;
s.Format("sum=%d",sum); pDC->TextOut(10,20,s);
double md[4]={1.4,4.5,3.1,9.7};
double sumd=fsum(md,4); //виклик функції
CString s1;
s1.Format("sum=%g",sumd); pDC->TextOut(10,20,s1);
}
4. перевантаження за допомогою шаблону:
Вміст файлу fsum.h буде таким:
template <class may>
may fsum(may d[],int n)
{may s=0;for(int i=0;i<n;i++)s+=d[i];return s;}
Функція void CFuncView::OnDraw(CDC* pDC) не зміниться.
Завдання до лабораторної роботи.
Написати та відладити текст програми для вирішення завдання за варіантом
Записати функцію після функції OnDraw та повторити результат
Перенести функцію в окремий файл т а приєднати її до файлу Lab10View в
Перевантажити функцію для іншого типу параметрів обома способами
Можна не створювати ресурсів - будувати меню та діалогове вікно.

де
v1,v2,v3
- об’єми куль з радіусами r1,r2,r3
відповідно
та
де
xm1
та xm2
- найменші елементи масиву Х1(70), Х2(80)
де
s1
- сума додатніх елементів масиву
Х(50); s2
- сума від’ємних елементів масиву
Y(60)