Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практика ООП.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.36 Mб
Скачать

Тема: класи потокового введення-виведення та робота з файлами.

Мета: вивчення методів бібліотечних класів С++ для керування введенням-виведенням даних різних типів.

Матеріально-технічне оснащення робочого місця: ПК, інструкційна картка.

Зміст та послідовність виконання завдань

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).

Матеріально-технічне оснащення робочого місця: ПК, інструкційна картка.