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

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

1. На основі списку list побудувати модель кільцевої черги елементів. Кожен елемент позначає роботу (процес), яка характеризується часом виконання. Час виконання роботи є випадковою величиною, розподіленою за експоненційним законом. Нові елементи надходять у систему і стають у кінець черги із заданою імовірністю (або через проміжки часу, розподілені за експоненційним законом). Обслуговування елементів здійснюється з голови черги методом квантування часу, що моделює паралельне виконання робіт. Квант часу є постійною або випадковою величиною. Якщо елемент не може бути обслуженим за довжину кванту часу, то він стає у кінець черги. При конфлікті включення у чергу перевага надається елементам з перерваним часом обслуговування.

Програма:

#include<iostream.h>

#include<conio.h>

#include<string.h>

void main()

{

float x,n,x1;

char r[100];

cout<<"vvedit riadok"<<"\n";

cin.get(r,100);

x=strlen(r);

for (int i=1; i<=x; i++)

{

if (r[i]==' ')

x1++;

}

x-=x1;

cout<<x;

getch();

}

Результат:

2. Написати шаблон класу, який використовує шаблонний клас vector для реалізації стекової структури даних. Продемонструвати операції занесення елемента у стек, вилучення елемента зі стека, копіювання стека, виведення вмісту стека.

Програма:

#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();

}

void push(int x);

{

if(p>bos)

{

printf("stek is full\n");

return;

}

*p=x;

p++;

}

int pop(void);

{

p--;

getch() ;

}

}

Результат:

Тема: опрацювання виняткових ситуацій.

Мета: полягає у вивченні засобів опрацювання виняткових ситуацій С++.

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

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

1. Побудувати клас-годинник, який має поля для збереження годин (0..23), хвилин (0..59) та секунд (0..59). Визначити обробник винятковоїситуації, якщо створюється об’єкт-годинник з недопустимими значеннями годин, хвилин або секунд.

Програма:

#pragma once

#define cls system("cls")

class CDate

{

public:

//konstruktor

CDate();

//setters---------------------------------------

void SetDay(const int _day) { day = _day; }

void SetMonth(const int _month) { month = _month; }

void SetYear(const int _year) { year = _year; }

//Getters-----------------------------------------

int GetDay() const { return day; }

int GetMonth() const { return month; }

int GetYear() const { return year; }

//inits--------------------------------------------

void InitDay();

void InitMonth();

void InitData();

//Increment day------------------------------------

void DateIncrement();

void Print() const; //Print data

private:

int day;

int month;

int year;

};

CDate::CDate()

{

InitData();

}

void CDate::InitDay()

{

int d;

std::cout << "Enter Day: ";

std::cin >> d;

if (d < 32 && d > 0)

SetDay(d);

else

{

cls;

InitDay();

}

}

void CDate::InitMonth()

{

int m;

std::cout << "Enter Month: ";

std::cin >> m;

if (m > 0 && m < 13)

SetMonth(m);

else

{ cls;

InitMonth();

}

void CDate::DateIncrement()

{

this->day++;

}

void CDate::Print() const

{

std::cout << "\n\tDate: \n"

<< "Day = " << day << "\n\nMonth = " << month

<< "\n\nYear = " << year << std::endl;

}

Результат:

2. Визначити обробник виняткової ситуації, який забороняє передавати

об’єкти у функцію через список параметрів або повертати їх з функції “за

значенням” (без допомоги вказівників або посилань).

Програма:

#include<iostream>

using namespace std;

class Chet

{

int k,min,max,k2;

public:

Chet()

{

int k2=0,min=0,max=100;

}

~Chet()

void Inpmin(int);

void Inpmax(int);

void Plus();

}obj;

void Chet::Plus()

{

k++;

if(k>=(max+1))

void Chet::Show()

{

cout<<k2<<" : "<<k<<endl;

cout<<"vvedit minimalne znachenia: ";

cin>>omin;

cout<<"vvedit maksumalne znachenia: ";

cin>>omax;

if((omax<omin)||(omin==omax))

obj.Inpmin(omin);

obj.Inpmax(omax);

system("pause");

system("cls");}

Результат: