Добавил:
інстаграм _roman.kob, курсові роботи з тєрєхова в.в. для КІ Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторна робота №2(1)

.docx
Скачиваний:
4
Добавлен:
31.05.2020
Размер:
156.15 Кб
Скачать

Технічний коледж

НУ "Львівська політехніка"

Лабораторна робота 2 З ОС

Студент групи 31КІ Мартинюк Р.

Викладач

Різник О. Я.

Львів 2020

Мета: створення алгоритму планування процесів

Код програми:

#include "pch.h"

#include <iostream>

#define N 10

using namespace std;

struct tabl

{

int wt;

int num;

};

void enter_mass(int mass_pr[N], int count)

{

for (int i = 0; i < count; i++)

{

cout << i + 1 << ". process_time = ";

cin >> mass_pr[i];

}

}

void fifo(int mass_pr[], int count)

{

int sum = 0;

for (int i = 0; i < count; i++)

{

if (i == 0) sum = 0;

else sum += mass_pr[i - 1];

cout << i + 1 << ". pwt = " << sum << endl;

}

cout << endl;

}

void sjf(int mass_pr[], int count)

{

int temp;

int zam_pr[N];

for (int i = 0; i < count; i++) zam_pr[i] = mass_pr[i];

for (int j = 0; j < N + 1; j++)

for (int i = 0; i < count - 1; i++)

{

if (zam_pr[i] > zam_pr[i + 1])

{

temp = zam_pr[i];

zam_pr[i] = zam_pr[i + 1];

zam_pr[i + 1] = temp;

}

}

fifo(zam_pr, count);

cout << endl;

}

void priority(int mass_pr[], int pr[], int count)

{

int mass_pr1[N];

int temp, temp2;

for (int i = 0; i < count; i++) mass_pr1[i] = mass_pr[i];

for (int j = 0; j < count + 2; j++)

for (int i = 0; i < count - 1; i++)

{

if (pr[i] > pr[i + 1])

{

temp = pr[i];

pr[i] = pr[i + 1];

pr[i + 1] = temp;

temp2 = mass_pr1[i];

mass_pr1[i] = mass_pr1[i + 1];

mass_pr1[i + 1] = temp2;

}

}

fifo(mass_pr1, count);

}

void add_priority(int pr[], int count)

{

cout << "<<Vvedit prioritety" << endl;

for (int i = 0; i < count; i++)

{

cout << i + 1 << ". prioritet = ";

cin >> pr[i];

}

cout << endl;

}

void clone(int mass_pr[], tabl array[], int count)

{

for (int i = 0; i < count; i++)

{

array[i].wt = mass_pr[i];

array[i].num = i + 1;

}

}

void zam(tabl array[], int count)

{

int tmp_num, tmp_wt;

tmp_wt = array[0].wt;

tmp_num = array[0].num;

for (int i = 0; i < count - 1; i++)

{

array[i].wt = array[i + 1].wt;

array[i].num = array[i + 1].num;

}

array[count].wt = tmp_wt;

array[count].num = tmp_num;

}

void rr(int mass_pr[], int count)

{

int quant;

int gen_wt = 0;

int sum = 0;

int i, j = 1;

tabl array[N];

clone(mass_pr, array, count);

cout << "<<Vvedit' kvant chasu:";

cin >> quant;

cout << endl;

for (i = 0; i < count; i++)

gen_wt += array[i].wt;

i = 0;

while (gen_wt != 0)

{

if (array[i].wt == 0) i++;

else

{

if (array[i].wt - quant >= 0)

{

array[i].wt -= quant;

gen_wt -= quant;

sum += quant;

cout << j << ". pr N" << array[i].num << " = " << sum - quant << endl;

i++;

j++;

}

else

{

gen_wt -= array[i].wt;

sum += array[i].wt;

cout << j << ". pr N" << array[i].num << " = " << sum - array[i].wt << endl;

array[i].wt = 0;

i++;

j++;

}

}

if (i >= count) i = 0;

}

}

int main()

{

int count;

int mass_pr[N];

int pr[N];

char checker = '0';

do

{

switch (checker)

{

case '0':

{

cout << "Vvedit kilkist procesiv:"; cin >> count;

enter_mass(mass_pr, count); break;

}

case '1': {fifo(mass_pr, count); break; }

case '2': {sjf(mass_pr, count); break; }

case '3': {add_priority(pr, count); priority(mass_pr, pr, count); break; }

case '4': {rr(mass_pr, count); break; }

}

cout << "Vvedit nomer funkcii:"; cin >> checker;

} while (checker != 'e');

}

Результат: