Página principal   Lista alfabética   Lista de componentes   Lista de archivos   Miembros de las clases   Archivos de los miembros   Páginas relacionadas  

conjunto_reales.cpp

Ir a la documentación de este archivo.
00001 
00007 #include <cassert>
00008 #include <conjunto_reales.h>
00009 
00010 /* _________________________________________________________________________ */
00011 
00012 bool Conjunto_Reales::posicion_elemento(int& pos, float val) const
00013 {
00014     int izq=0, der=nelementos-1,centro;
00015     
00016     while (der-izq>=0) {
00017         centro=(izq+der)/2;
00018         if (val<v[centro])
00019         der=centro-1;
00020         else if (val>v[centro])
00021             izq=centro+1;
00022             else {
00023             pos=centro;
00024             return true;
00025             }
00026     }
00027     pos= izq;
00028 
00029     return false;
00030 }
00031 
00032 /* _________________________________________________________________________ */
00033 
00034 bool Conjunto_Reales::insertar(float f) 
00035 {
00036   int pos;
00037   if (posicion_elemento(pos,f))
00038     return false;
00039   else {
00040     if (v.size()==nelementos)
00041       if (v.size()==0)
00042         v.resize(1);
00043       else v.resize(2*v.size());
00044     for (int j=nelementos; j>pos; --j)
00045       v[j]=v[j-1];
00046     v[pos]= f;
00047     nelementos++;
00048     return true;
00049   }  
00050 }
00051 /* _________________________________________________________________________ */
00052 
00053 bool Conjunto_Reales::borrar(float f) 
00054 {
00055   int pos;
00056   if (posicion_elemento(pos,f)) {
00057     nelementos--;
00058     for (int j=pos;j<nelementos;++j)
00059       v[j]=v[j+1];
00060     if (nelementos<v.size()/4)
00061       v.resize(v.size()/2);
00062     return true;
00063   }
00064   else return false;
00065 }

Programación en C++. Desarrollado por Antonio Garrido, © 2003