Консультация № 170374
12.07.2009, 08:46
0.00 руб.
0 0 0
Всем привет. Проблемы с реализацией очереди и нагруженного множества. Вот задачи:
Создать исполнитель с указанным базовым типом данных , явно содержащий систему предписаний исполнителя. Все элементы предписания должны отображаться в течение всего процесса выполнения программы. Предписания исполнителя должны быть выполнены в виде отдельных процедур и/или функций. При невозможности выполнения какого-либо предписания генерируется результат "отказ работы" с указанием ошибки.
Исполнители: очередь и нагруженное множество
Типы данных: Слово и Символ.
Все это дело нужно реализовать с помощью массивов и с наименьшим количеством указателей (или вообще без них). Используется Builder 5,02
Пробовал тут реализовать стек (по идее из 2 стеков можно слепить очередь), но чего-то не работает. Помогите разобраться
Код:
Код:
#include <iostream.h>
#include <time.h>
#include <stdlib.h>
#include <stdio.h>

const n=10;
int S[n];
int i,j;
int x,t,z;
int CLEAR(int t); //Î÷èñòêà ñòåêà
int ERROR(int k); //Ñïèñîê îøèáîê
bool PROV(bool z); //Ïðîâåðÿåì íà îøèáêè
int VSTEK(int x); //Äîáàâëåíèå ýëåìåíòà â ñòåê
int IZSTEKA(int x); //Óäàëåíèå èç ñòåêà
main()
{
CLEAR(t); //äåëàåì ñòåê ïóñòûì
randomize(); //çàïóñêàåì äàò÷èê ñëó÷àéíûõ ÷èñåë
j=random(20);
cout<<"Ïîïûòêà äîáàâèòü â ñòåê "<<j<<" ýëåìåíòîâ\n\n";
for(i=0;i<j;i++)
{ x=random(100);
VSTEK(x);
cout<<"Ýëåìåíò ¹"<<(i+1)<<" "<<S[t]<<"\n";
}
cout<<"\nÇíà÷åíèå t="<<t<<"\n";
cout<<"Óäàëåíèå èç ñòåêà: \n";
while(PROV)
{IZSTEKA; cout<<x;}
return 0;
}


int CLEAR(int t){t=0; return(t);}
int ERROR(int k)
{
if(k=2){cout<<"ñòåê ïóñò";}
if(k=1){cout<<"ñòåê ïåðåïîëíåí";}
return(k);
}
bool PROV(bool z)
{
if(t=0){ERROR(2); z=false;}
else if(t>n){cout<<"ñòåê ïåðåïîëíåí"; z=false;}
else z=true;
return(z);
}
int VSTEK(int x)
{ t++;
if(t>0&&t<=n)
S[t]=x;
else {PROV; t--; }
return(x);
}
int IZSTEKA(int x)
{
if(PROV){x=S[x]; t--;}
return(x);
}

Обсуждение

Форма ответа