Объектно-ориентированное программирование



         

Объектно-ориентированное программирование - стр. 78


struct polar{

 double if=cos(fi);

             sf=sin(fi);

          cl=cos(l),sl=sin(l);

_3d r;

r.x=r*sf*cl;

r.y=r*sf*sl;

r.z=r*if;

return r;

};

ПРИМЕР  3

Структура  с_buffer, описывающая  кольцевой буфер емкостью 1024 действительных числа.

 Для нее надо описать функции:

 void init();           //инициализация

 void  add();          //добавить элемент

 double        get();           //взять элемент

 int    free();          //величина свободного пространства

 int    used();                  //величина занятого пространства

Буферизация, или организация очереди, - широко распространенное техническое решение. Один из способов реализации буфера - кольцевой буфер на одномерном ограниченном массиве. Идея такова. Имеется одномерный массив и две индексные переменные. Одна- индекс приемника <- указывает на элемент массива, куда записывается вновь поступающие значения. При записи индекс массива увеличивается на единицу. Вторая- индекс источника <- указывает га элемент массива из которого извлекается значение. При извлечении индекс источника тоже увеличивается на единицу. Если один из индексов выходит за границы, то он устанавливается на ее начало. В такой очереди могут стоять не только числа, но и объекты с более сложной структурой.

В соответствии с этим программа будет выглядеть так:

Struct C_Buffer{

 double ptr[1024];                   //массив буфера

 int dest,scr;                             //DESTination- приемник,SouRCe- источник

void init(){src=dest==0;};

void add(double a);

double get();

int used();

int free();

};

void C_Buffer::add(double &a){

ptr[dest++]=a;

if)dest==1024)

dest=0;

};

int C_Buffer::used(){

int=dest-src;

if(n>=0)return n;

else return n+1024;

};

double C_Buffer::get(){

if(++src!=1024) return ptr[src-1];

src=0;

return ptr[1023];

};

int C_Buffer::free(){

int n=src-dest;

if(n>0) return n;

else return n+1024;

};

Функция int() нужна для инициализации указателей.


Содержание  Назад  Вперед