ТА_Методички / Lec2_10
.pdfstack(); |
// Конструктор |
~stack(); |
// Деструктор |
void push(int i); int pop(); };
// Конструктор класу stack stack::stack()
{
tos = 0;
cout << " Стек ініціалізовано \n"; }
// Деструктор класу stack stack::~stack()
{
cout << "Стек знищено \n";
}
Врахуйте, що конструктори й деструктори не повертають ніяких значень.
Проілюструємо роботу конструктора й деструктора за допомогою нової версії програми stack. Зверніть увагу на те, що тепер функція init() не потрібна.
21/33
// Використання конструктора й деструктора.
#include <iostream> using namespace std; #define SIZE 100
// Створюємо клас stack class stack { int stck[SIZE]; int tos;
public:
stack(); |
// Конструктор |
~stack(); |
// Деструктор |
void push(int i); int pop();
// Конструктор класу stack stack::stack()
{tos = 0;
cout << " Стек ініціалізовано \n"; }
// Деструктор класу stack stack::~stack()
{cout << "Стек знищено \n"; }
22/33
void stack::push(int i)
{
if(tos==SIZE) |
{ cout << "Стек повний \n"; |
return; |
|
} |
i; |
stck[tos] = |
|
tos++; |
|
} |
|
int stack::pop() |
|
if(tos == 0) |
{ |
cout <<: "Стек порожній \n"; return 0;
}
tos ---і;
return stck[tos];
}
int main()
{
stack a, b; // Створюємо два об'єкти класу stack a.push(1); b.push(2);
a.push(3) ; b.push(4);
23/33
cout << a.pop() << " "; cout << a.pop() << " "; cout << b.pop() << " "; cout << b.pop() << "\n"; return 0;
}
Результат роботи програми виглядає так.
Стек ініціалізовано Стек ініціалізовано
3 1 4 2
Стек знищено Стек знищено
24/33
5. Приклади програм
Наведемо декілька прикладів типових завдань до лабораторної роботи.
Даний приклад демонструє перевантаження функції suma, для обчислення суми двох цілих чисел, довгих цілих чисел і двох чисел з плаваючою крапкою.
#include <iostream.h> #include <conio.h>
// Funkciya SUMA perehruzhena trychi int suma(int a, int b);
long int suma (long e, long f); double suma(double c, double d);
//
int main()
{
int i1,i2;
long int l1,l2; double d1, d2; clrscr ();
cout << "Vvedit' dva cilyh chysla" << "\n"; cin >> i1 >> i2; cout << "\n";
cout << "Vvedit' dva dovgyh cilyh chysla" << "\n"; cin >> l1 >> l2; cout << "\n";
25/33
cout << "Vvedit' dva chysla typu double" << "\n"; cin >> d1 >> d2; cout << "\n";
cout << "Suma cilyh" << "\n";
cout << suma(i1,i2) << "\n";cout << "\n"; cout << "Suma dovhyh cilyh" << "\n";
cout << suma(l1,l2) << "\n"; cout << "\n"; cout << "Suma chysel double" << "\n";
cout << suma(d1,d2) << "\n"; getch ();
return 0;
}
// Suma dvoh cilyh
int suma(int a, int b) {int a1;
a1=a+b;return a1;}
// Suma dovgyh cilyh
long int suma(long int c, long int d) {long int a2;
a2=c+d;return a2;}
// Suma chysel double
double suma(double e, double f)
26/33
{double a3; a3=e+f;return a3;}
|
Результат |
|
|
|
|
Vvedit' dva cilyh chysla |
Suma cilyh |
|
33 |
100 |
|
67 |
Suma dovhyh cilyh |
|
Vvedit' dva dovgyh cilyh chysla |
||
999999 |
||
444444 |
|
|
555555 |
Suma chysel double |
|
Vvedit' dva chysla typu double |
7.777778 |
|
|
||
5.55555555 |
|
|
2.22222222 |
|
27/33
Наступний приклад демонструє роботу з відкритими і закритими членами класу.
#include <iostream.h> #include <stdio.h> #include <conio.h> #include <string.h>
// Opys clasu EMPLOYEE class employee
{
// Zakryti chleny klasu
char name[80]; double wage; public:
void putname(char *p); void getname(char *p); void putwage(double w); double getwage();
};
// Zadannya imeni i prizvishcha
void employee::putname(char *s)
{
strcpy(name, s);
}
28/33
// Vyvid imeni i prizvishcha
void employee::getname(char *s)
{
strcpy(s, name);
}
// Vvid (zadannya) zarplaty
void employee::putwage(double w)
{
wage=w;
}
// Powernenna (vyvid) zarplaty double employee::getwage()
{
return wage;
}
int main()
{
employee petro; char name[40]; clrscr ();
// Zadannya imeni i zarplaty
29/33
petro.putname("Petro Samchuk"); petro.putwage(15000);
// Vyvid danyh petro.getname(name);
cout << name << "\n" << "zaroblaye " << petro.getwage () << " grn. za rik";
getch (); return 0;
}
Результат
Petro Samchuk
zaroblaye 15000 grn. za rik
30/33
