Розробити підпрограми роботи з приоритетною чергою. Постановка запитів у чергу виконується підряд в кінець черги, зняття – по приоритету. Чергу реалізувати на масиві.
5.4.1. Текст програми.
#include<conio.h>
#include<iostream.h>
#include<mem.h>
#include<stdlib.h>
int och[512]; //черга на 512 запитів
int point=-1; //вказівник на чергу
int addel (int a) //додавання запиту у чергу
{
if (point<511) och[point++]=a;
else
{
cout << "enough queuen" //черга переповнена
return 0;
}
return 1;
}
void delel (void) //читання запиту з черги
{
if (point>=0)
{
int max=och[0], nmax=0; // пошук запиту з максимальним параметром
for(int i=1; i<point; i++)
if (max<och[i]) max=och[i], nmax=i;
cout<<"read "<<max<<endl;
point--; //зсув черги
for(i=nmax; i<point; i++) och[i]=och[i+1];
}
}
void printoch (void) //вміст черги
{
if (point>=0)
{
cout<<": ";
for (int i=0;i<point;i++)
cout<<och[i]<<" ";
cout<<"n";
}
}
void main (void)
{
int op,f;
clrscr();
do
{
op=random(2); //0-запис запиту, 1- читання
f=random(15); //запит
if (op) delel();
else if (! addel(f)) exit(1);
printoch ();
getch();
}
while (1);
}
5.4.2. Фрагмент результатів роботи програми
. . .
12 5 3 0 14 6 1 14 6 2 3
read 14
12 5 3 0 6 1 14 6 2 3
read 14
12 5 3 0 6 1 6 2 3
12 5 3 0 6 1 6 2 3 7
read 12
5 3 0 6 1 6 2 3 7
. . .