
- •Міністерство аграрної політики та продовольства україни рівненський державний аграрний коледж
- •Тема: оголошення та структура класів.
- •Зміст та послідовність виконання завдань
- •Тема: агрегування та композиція класів.
- •Зміст та послідовність виконання завдань
- •Тема: перевантаження операцій.
- •Зміст та послідовність виконання завдань
- •Тема: агрегування та композиція класів.
- •Зміст та послідовність виконання завдань
- •Тема: віртуальні функції, поліморфізм.
- •Зміст та послідовність виконання завдань
- •Тема: класи потокового введення-виведення та робота з файлами.
- •Зміст та послідовність виконання завдань
- •Тема: шаблонні класи.
- •Зміст та послідовність виконання завдань
- •Зміст та послідовність виконання завдань
- •Тема: опрацювання виняткових ситуацій.
- •Зміст та послідовність виконання завдань
- •Тема: динамічна ідентифікація та приведення типів.
- •Зміст та послідовність виконання завдань
- •Висновок
- •Список використаной літератури
Тема: класи потокового введення-виведення та робота з файлами.
Мета: вивчення методів бібліотечних класів С++ для керування введенням-виведенням даних різних типів.
Матеріально-технічне оснащення робочого місця: ПК, інструкційна картка.
Зміст та послідовність виконання завдань
1. Написати програму копіювання текстового файла з видаленням зайвих пропусків. Опрацювати можливі помилки.
Програма:
# include <iostream.h>
# include <conio.h>
struct node
{
int info;
node *l, *r;
};
node * tree=NULL;
void push(int a,node **t)
{
if ((*t)==NULL)
{
(*t)=new node;
(*t)->info=a;
(*t)->l=(*t)->r=NULL;
return;
}
if (a>(*t)->info) push(a,&(*t)->r);
else push(a,&(*t)->l);
}
void print (node *t,int u)
{
if (t==NULL) return;
else
{
print(t->l,++u);
for (int i=0;i<u;++i) cout<<"|";
cout<<t->info<<endl;
u--;
}
print(t->r,++u);
}
void main ()
{
int n;
int s;
cout<<"vvedite kilkist elementiv ";
cin>>n;
for (int i=0;i<n;++i)
{
cout<<"vvedite chislo ";
cin>>s;
push(s,&tree);
}
cout<<"vashe derevo \n";
print(tree,0);
getch();
}
Результат:
2. Написати програму, яка зчитує з файла текст та виводить на екран тільки ті рядки, які містять числа. Опрацювати можливі помилки.
# include <iostream.h>
# include <conio.h>
struct node
{
int info;
node *l, *r;
};
node * tree=NULL;
void push(int a,node **t)
{
if ((*t)==NULL)
{
(*t)=new node;
(*t)->info=a;
(*t)->l=(*t)->r=NULL;
return;
}
if (a>(*t)->info) push(a,&(*t)->r);
else push(a,&(*t)->l);
}
void print (node *t,int u)
{
if (t==NULL) return;
else
{
print(t->l,++u);
for (int i=0;i<u;++i) cout<<"|";
cout<<t->info<<endl;
u--;
}
print(t->r,++u);
}
void main ()
cout<<"vvedite chislo ";
cin>>s;
push(s,&tree);
}
cout<<"vashe derevo \n";
print(tree,0);
getch();
}
Результат:
Тема: шаблонні класи.
Мета: полягає у вивченні структури, синтаксису та семантики шаблонних класів С++ та їх застосуванні для побудови програмних систем.
Матеріально-технічне оснащення робочого місця: ПК, інструкційна картка.
Зміст та послідовність виконання завдань
1. Побудувати шаблонний клас ЧЕРГА З ПРІОРИТЕТАМИ. Виконати злиття двох черг в одну так, щоб не порушити впорядкованість загальної черги. Застосувати шаблонний клас для роботи з чергами елементів різних типів.
Програма:
#include<iostream>
using namespace std;
class Chet
{
int k,min,max,k2;
public:
Chet()
{
int k2=0,min=0,max=100;
}
~Chet()
{
cout<<"Работает деструктор!\n";
}
void Inpmin(int);
void Inpmax(int);
void Plus();
void Show();
}obj;
void Chet::Plus()
{
k++;
if(k>=(max+1))
{
k2++;
k=min;
}
}
void Chet::Inpmin(int b)
{
min=b;
k=min;
}
void Chet::Inpmax(int d)
{
max=d;
}
void Chet::Show()
{
cout<<k2<<" : "<<k<<endl;
}
void main()
{
setlocale(LC_CTYPE,"Rus");
int omax=0, omin=0,key=0;
do
{
cout<<"vvedit minimalne znachenia: ";
cin>>omin;
cout<<"vvedit maksumalne znachenia: ";
cin>>omax;
if((omax<omin)||(omin==omax))
cout<<"minimalne znachenia zoboviazane bytu menshum za maximalne i vonu ne povuni bytu rivnumu\n povtorit vvedenia\n";
}while((omax<omin)||(omin==omax));
obj.Inpmin(omin);
obj.Inpmax(omax);
system("pause");
system("cls");
do
{
cout<<"1. zbilshenia znachenia shetcika na 1\n2.vivod znachenia shetcika\n0. vuhid\n";
cin>>key;
switch(key)
{
case 1:
obj.Plus();
system("cls");
break;
case 2:
obj.Show();
system("pause");
system("cls");
break;
case 0:
cout<<"do pobachenia !\n";
break;
default:
cout<<"vubrano nepravulna dia\n";
system("pause");
system("cls");
break;
}
}
while(key!=0);
}
Результат:
2. Розробити шаблонний клас СТЕК. Побудувати два стеки із впорядкованих елементів даних. Виконати злиття стеків в один стек так, щоб не порушити загальної впорядкованості елементів.
Програма:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
/*#define max=50*/
int *tos,*bos,*p;
void push(int x);
int pop(void);
void main(void)
{
clrscr();
int x,m,i,max;
printf("vvedite vershinu steka\n");
scanf("%d",max);
printf("vvedite iskomyi element\n");
p=(int *)malloc(max*sizeof(int));
tos=p;
bos=p+max-1;
for (i=0;i<4;i++)
{
scanf("%d",&x);
if(x<0) push(x);
printf("\n Otvet - \n");
while(p>tos)
{
x=pop();
printf("\n%d",x);
}
getch();
if(p>bos)
{
printf("stek is full\n");
return;
}
*p=x;
p++;
p--;
getch() ;
} }
Результат:
ТЕМА: БІБЛІОТЕКА СТАНДАРТНИХ ШАБЛОНІВ.
Мета: полягає у вивченні структури та функціонального призначення класів C++ із бібліотеки стандартних шаблонів STL (Standard Template Library).
Матеріально-технічне оснащення робочого місця: ПК, інструкційна картка.