
- •1 Характеристика мови програмування
- •2.4 Опис класів та методів
- •2.7 Контрольний приклад
- •3.4 Опис класів та методів
- •3.7 Керівництво користувачеві
- •3.4 Опис класів та методів
- •4.7 Контрольний приклад
- •5.4 Опис класів та методів
- •6.4 Опис класів та методів
- •6.7 Контрольний приклад
- •7.4 Опис класів та методів
- •7.7 Контрольний приклад
- •Список використаних джерел
3.4 Опис класів та методів
При реалізації задачі в якості об’єктів розглядаємо форми для обчислення тих чи інших змінних. Для заданих об’єктів в проекті розроблені наступні класи Czz1, Czz2 з наступними інтерфейсними частинами представлених у підрозділу 2.5 і наступною реалізацію представленою у підрозділу 2.5.
Клас Czz1 (форма одномірного масиву) створений шляхом додавання до базового класу членів змінних та методів.
Клас Czz1 має наступний інтерфейс:
class Czz1 : public CDialog
{// Construction
public:
Czz1(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(Czz1)
enum { IDD = IDD_DIALOG1 };
int m_i;
CMSFlexGrid m_mas;
int m_a;
//}}AFX_DATA
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(Czz1)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(Czz1)
afx_msg void OnButton1();
afx_msg void OnRadio1();
afx_msg void OnButton2();
afx_msg void OnRadio2();
afx_msg void OnRadio3();
//}}AFX_MSG
DECLARE_MESSAGE_MAP() };
Методи є обробниками подій кнопок. Члени змінних додаються до класу за допомогою майстра ClassWizard, шляхом зв’язування об’єктів для вводу значень змінних та заданих ідентифікаторів для змінних, це представлено у таблиці 3.3
Таблиця 3.3 – змінні - члена класу Czz1
Ідентифікатор об’єкта |
Ідентифікатор змінної - члена класу |
Тип змінної |
IDC_EDIT1 |
m_i |
int |
IDC_EDIT2 |
m_a |
int |
IDC_MSFLEXGRID1 |
m_mas |
CMSFlexGrid |
Клас Czz2 (форма двомірного масиву) створений шляхом додавання до базового класу членів змінних та методів.
Клас Czz2 має наступний інтерфейс:
class Czz2 : public CDialog
{
// Construction
public:
Czz2(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(Czz2)
enum { IDD = IDD_DIALOG2 };
int m_i;
int m_j;
CMSFlexGrid m_mas;
//}}AFX_DATA
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(Czz2)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(Czz2)
afx_msg void OnButton1();
afx_msg void OnRadio1();
afx_msg void OnRadio3();
afx_msg void OnRadio2();
//}}AFX_MSG
DECLARE_MESSAGE_MAP() };
Методи є обробниками подій кнопок. Члени змінних додаються до класу за допомогою майстра ClassWizard, шляхом зв’язування об’єктів для вводу значень змінних та заданих ідентифікаторів для змінних, це представлено у таблиці 3.4
Таблиця 3.4 – змінні - члена класу Czz2
Ідентифікатор об’єкта |
Ідентифікатор змінної - члена класу |
Тип змінної |
IDC_EDIT1 |
m_i |
int |
IDC_EDIT2 |
m_j |
int |
IDC_MSFLEXGRID1 |
m_mas |
CMSFlexGrid |
3.5 Програмний код
//Блок 1 – метод по обробці кнопки Button1 на формі одномірного масиву
void Czz1::OnButton1()
{ int stolb;
CString s;
int st2,i,j;
UpdateData();
stolb=m_i;
m_mas.SetCols(stolb);
m_mas.SetRows(1);
int *mas=new int [stolb];
m_mas.SetRow(0);
for (j=0;j<stolb;j++)
{ m_mas.SetCol(j);
mas[j]=rand()%801-400;
s.Format("%d",mas[j]);
m_mas.SetText(s); }}
//Блок 2 – метод по обробці кнопки Button2 на формі одномірного масиву
void Czz1::OnButton2()
{ CString Message = " Вы действительно хотите завершить работу?" ;
CString Title = "Завершить работу";
UINT nType = MB_ICONQUESTION | MB_YESNO | MB_DEFBUTTON2 ;
int anser = MessageBox ( Message , Title , nType ) ;
if (anser==IDYES) CDialog:: OnOK(); }
//Блок 3 – метод по обробці кнопки Radio1 на формі одномірного масиву
void Czz1::OnRadio1()
{ int p=1,pr=0;
int stolb;
CString s;
int st2,i,j;
UpdateData();
stolb=m_i;
m_mas.SetRow(0);
for (j=0;j<stolb;j++){
m_mas.SetCol(j);
if ((atoi(m_mas.GetText())>9)&&(atoi(m_mas.GetText())<100))
{ pr=1;p*=atoi(m_mas.GetText()); }}
if (pr==0) {MessageBox("Нет двузначных элементов в данном массиве"); }
else{s.Format("%d",p);s="Произведение двузначных чисел = "+s; MessageBox(s);}}
//Блок 4 – метод по обробці кнопки Radio2 на формі одномірного масиву
void Czz1::OnRadio2()
{ int p=1,pr=0;
int stolb;
CString s;
int st2,i,j;
UpdateData();
stolb=m_i;
m_mas.SetRow(0);
for (j=0;j<stolb;j++){
m_mas.SetCol(j);
if ((abs(atoi(m_mas.GetText()))>50)&&(atoi(m_mas.GetText())%2==0)&&(atoi(m_mas.GetText())%3==0)) {pr=pr+1;}}
if (pr==0) {MessageBox("Нет элементов превышающих 50 и кратных 2 или 3");}
else{s.Format("%d",p);s="Кол-во чисел превышаюших 50 и кратных 2 и 3 = "+s; MessageBox(s);}}
//Блок 5 – метод по обробці кнопки Radio3 на формі одномірного масиву
void Czz1::OnRadio3()
{ int p=1,pr=0;
int stolb;
CString s,d;
int st2,i,j,ww,qq;
UpdateData();
stolb=m_i;
m_mas.SetRow(0);
for (j=0;j<stolb-1;j++){
m_mas.SetCol(j);
ww=atoi(m_mas.GetText());
m_mas.SetCol(j+1);
qq=atoi(m_mas.GetText());
if ((ww>0)&&(qq<0)||(ww<0)&&(qq>0))
{ if (qq+ww<m_a) {
s.Format("%d",ww);
d.Format("%d",qq);
s="Первое число = "+s +"; Второе число = "+d; MessageBox(s); break; } else {s="Нема пари сумма яких менш А "; MessageBox(s);}}}}
//Блок 6 – метод по обробці кнопки Button1 на формі двомірного масиву
void Czz2::OnButton1()
{ int stolb;
CString s;
int st2,i,j;
UpdateData();
stolb=m_i+1;
st2=m_j+1;
m_mas.SetCols(stolb);
m_mas.SetRows(st2);
int **mas=new int *[st2];
for (i=1;i<st2;i++)
mas[i]=new int [stolb];
for (i=1;i<st2;i++)
for (j=1;j<stolb;j++)
{ m_mas.SetRow(i);
m_mas.SetCol(j);
mas[i][j]=rand()%801-400;
s.Format("%d",mas[i][j]);
m_mas.SetText(s); }}
//Блок 7 – метод по обробці кнопки Radio1 на формі двомірного масиву
void Czz2::OnRadio1()
{ int p=1,pr=0;
int stolb;
CString s,w;
int st2,i,j;
UpdateData();
stolb=m_i+1;
st2=m_j+1;
for (i=1;i<st2;i++)
for (j=1;j<stolb;j++){
m_mas.SetRow(i);
m_mas.SetCol(j);
if ((atoi(m_mas.GetText())>0)&&(atoi(m_mas.GetText())%5==0))
{ pr=1;
w.Format("%d",atoi(m_mas.GetText()));
s=s+w+"; "; }}
if (pr==0) {MessageBox("Нет элементов кратных 5 в данном массиве");}
else{s="Положительные эл-ты кратные 5 = "+s; MessageBox(s);}}
//Блок 8 – метод по обробці кнопки Radio2 на формі двомірного масиву
void Czz2::OnRadio2()
{ int p=0,pr=0,min,max;
int stolb,minI,minJ,maxI,maxJ;
CString s,w,mn,mx,sw,st,qw,minS,maxS;
int st2,i,j;
UpdateData();
stolb=m_i+1;
st2=m_j+1;
for (j=0;j<stolb-1;j++)
{ m_mas.SetRow(1);
m_mas.SetCol(j+1);
min=atoi(m_mas.GetText());
max=atoi(m_mas.GetText());
minI=1;
minJ=j+1;
maxI=1;
maxJ=j+1;
for (i=0;i<st2-1;i++)
{ m_mas.SetRow(i+1);
m_mas.SetCol(j+1);
if (min>atoi(m_mas.GetText())) {
min=atoi(m_mas.GetText());
mn.Format("%d",min);
s=mn;
minI=i+1; }
if (max<atoi(m_mas.GetText())) {
max=atoi(m_mas.GetText());
mx.Format("%d",max);
w=mx;
maxI=i+1; }}
m_mas.SetRow(1);
minS=m_mas.GetText();
m_mas.SetRow(minI);
m_mas.SetText(minS);
m_mas.SetRow(1);
mn.Format("%d",min);
m_mas.SetText(mn);
m_mas.SetRow(st2-1);
maxS=m_mas.GetText();
m_mas.SetRow(maxI);
m_mas.SetText(maxS);
m_mas.SetRow(st2-1);
mx.Format("%d",max);
m_mas.SetText(mx); }}
//Блок 9 – метод по обробці кнопки Radio3 на формі двомірного масиву
void Czz2::OnRadio3()
{ int p=0,pr=0;
int stolb;
CString s,w;
int st2,i,j;
UpdateData();
stolb=m_i+1;
st2=m_j+1;
for (i=1;i<st2;i++)
for (j=1;j<stolb;j++){
m_mas.SetRow(i);
m_mas.SetCol(j);
if (atoi(m_mas.GetText())>0)
{ pr=1;
p=p+atoi(m_mas.GetText()); }}
if (pr==0) {MessageBox("Нет положительных эл-тов в данном массиве");}
else{s.Format("%d",p);s="Сумма положительных эл-ов = "+s; MessageBox(s);}}
3.6 Керівництво користувачеві
Для запуску програми запустити файл Fox2.exe. Після чого з’явиться меню програми, представлене на рисунку 3.3
Рисунок 3.3 – Меню
Для розв’язання задачі одномірного масиву необхідно натиснути на кнопку «Вычисления» - «Одномерные массивы», або на картинку яка відображена на рисунку 3.4.
Рисунок 3.4 – Кнопка для одномірного масиву
. Після чого з’явиться форма з умовою задачі та вводу даних для розв’язання задачі, яка представлена на рисунку 3.5
Рисунок 3.5 – Форма одномірного масиву
Для розрахунку треба задати данні А дійсного типу, кількість елементів, та автоматично ввести самі елементи. Для виводу результатів треба натиснути кнопки, які виконують розрахунки. Після завершення роботи з програмою натисніть на кнопку «ВИХІД».
Для розв’язання задачі двомірного масиву необхідно натиснути на кнопку «Розрахунок» - «Задача 2», або на картинку яка відображена на рисунку 3.6.
Рисунок 3.6 – Кнопка для двомірного масиву
Після чого з’явиться форма з умовою задачі та вводу даних для розв’язання задачі, яка представлена на рисунку 3.7
Рисунок 3.7 – Форма двомірного масиву
Для розрахунку треба задати розмірність масиву та ввести самі елементи автоматично. Для виводу результатів треба натиснути кнопки, які виконують розрахунки – «Значення кратні 5», «В кожному стовбці макс і мін єл поміняти з першим і останнім», «Визначити суму позитивних елементів». Після закінчення роботи з програмою закрийте вікно програми.