Типове завдання

Розробити підпрограми роботи з приоритетною чергою. Постановка запитів у чергу виконується підряд в кінець черги, зняття – по приоритету. Чергу реалізувати на масиві.

 

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

. . .