VectorInt.hpp
Ir a la documentación de este archivo.
1 // Clase para el trabajar con vectores enteros //
3 // //
4 // //
5 // Análisis y Diseño y Programación: //
6 // //
7 // Nombre: Antonio Carrillo Ledesma //
8 // E-mail: acl@www.mmc.geofisica.unam.mx //
9 // Página: http://www.mmc.geofisica.unam.mx/acl //
10 // //
11 // //
12 // Este programa es software libre. Puede redistribuirlo y/o modificarlo //
13 // bajo los términos de la Licencia Pública General de GNU según es //
14 // publicada por la Free Software Foundation, bien de la versión 2 de //
15 // dicha Licencia o bien (según su elección) de cualquier versión //
16 // posterior. //
17 // //
18 // Este programa se distribuye con la esperanza de que sea útil, pero SIN //
19 // NINGUNA GARANTÍA, incluso sin la garantía MERCANTIL implícita o sin //
20 // garantizar la CONVENIENCIA PARA UN PROPÓSITO PARTICULAR. Véase la //
21 // Licencia Pública General de GNU para más detalles. //
22 // //
23 // Debería haber recibido una copia de la Licencia Pública General junto //
24 // con este programa. Si no ha sido así, escriba a la Free Software //
25 // Foundation, Inc., en 675 Mass Ave, Cambridge, MA 02139, EEUU. //
26 // //
27 // //
29 
30 
31 
32 #ifndef __VectorInt__
33 #define __VectorInt__
34 
35 #include "Definiciones.hpp"
36 #include "Vector_Base.hpp"
37 
38 
39 
41 
46 class VectorInt : public Vector_Base
47 {
48 private:
49 
51  int *V;
52 
54 
56  void solicitaMemoria(const int col, const int val);
57 
59 
60  void liberaMemoria(int tp)
61  {
62  delete []V;
63  V = NULL;
64  if (tp)
65  {
66  delete []Nmb;
67  Nmb = NULL;
68  }
69  }
70 
71 public:
72 
73 
76  {
77  solicitaMemoria(1,0);
78  asignaNombre("Sin Nombre");
79  }
80 
82 
85  {
86  solicitaMemoria(vec.columnas(),0);
87  asignaNombre(vec.nombre());
88  for (int i = 0; i < Col; i++) V[i] = vec.retorna(i);
89  }
90 
91 
93 
95  VectorInt(const int col) : Vector_Base()
96  {
97  solicitaMemoria(col,0);
98  asignaNombre("Sin Nombre");
99  }
100 
102 
105  VectorInt(const int col, int val) : Vector_Base()
106  {
107  solicitaMemoria(col,val);
108  asignaNombre("Sin Nombre");
109  }
110 
112 
116  VectorInt(const int col, const int val, const char *nmb) : Vector_Base()
117  {
118  solicitaMemoria(col,val);
119  asignaNombre(nmb);
120  }
121 
123 
126  VectorInt(const int col, const char *nmb) : Vector_Base()
127  {
128  solicitaMemoria(col,0);
129  asignaNombre(nmb);
130  }
131 
134  {
135  liberaMemoria(1);
136  }
137 
139 
140  void redimensiona(int ncol)
141  {
142  liberaMemoria(0);
143  solicitaMemoria(ncol,0);
144  }
145 
147 
148  void inicializa(const int val);
149 
151 
153  inline int operator [] (size_t col)
154  {
155  return retorna(col);
156  }
157 
159 
161  inline int operator () (size_t col)
162  {
163  return retorna(col);
164  }
165 
166 
167 #ifdef DEPURAR
168 
171  void asigna(const int col, const int val)
172  {
173  if (col < 0 || col >= Col)
174  {
175  printf("Error indices desbordados (%d)\n", col);
177  exit(1);
178  }
179  V[col] = val;
180  }
181 
182 
184 
186  int retorna(const int col)
187  {
188  if (col < 0 || col >= Col)
189  {
190 
191  printf("Error indices desbordados (%d)\n", col);
193  exit(1);
194  }
195  return V[col];
196  }
197 
198 #else
199 
202  inline void asigna(const int col, const int val)
203  {
204  V[col] = val;
205  }
206 
208 
210  inline int retorna(const int col)
211  {
212  return V[col];
213  }
214 #endif
215 
217 
218  void copia(VectorInt *a);
219 
221 
223  void visualiza(int nl = 0, int num = 0);
224 
226 
227  inline ldouble tamano(void)
228  {
229  ldouble t = (((unsigned long) sizeof(V) * Col) / 1024.0);
230  return t;
231  }
232 
234  inline void visualizaInformacion(void)
235  {
236  printf("\nVector entero \"%s\" de dimensión: %d \n",Nmb,Col);
237  }
238 };
239 
244 #endif
VectorInt(const int col, const char *nmb)
Constructor de la clase.
Definition: VectorInt.hpp:126
char * nombre(void)
Retorna el nombre del vector.
Definition: Vector_Base.hpp:98
VectorInt(VectorInt &vec)
Constructor de la clase.
Definition: VectorInt.hpp:84
int operator()(size_t col)
Retorna el valor de la columna col.
Definition: VectorInt.hpp:161
void asignaNombre(const char *nmb)
Asigna nombre al vector.
Definition: Vector_Base.hpp:80
int operator[](size_t col)
Retorna el valor de la columna col.
Definition: VectorInt.hpp:153
void copia(VectorInt *a)
Copia el contenido del vector al vector a.
Definition: VectorInt.cpp:88
Clase para el trabajar con vectores con valores enteros.
Definition: VectorInt.hpp:46
void asigna(const int col, const int val)
Asigna el valor val a la columna col.
Definition: VectorInt.hpp:202
void visualizaInformacion(void)
Visualiza información general del vector.
Definition: VectorInt.hpp:234
ldouble tamano(void)
Tamaño del vector (aproximado) en Kb.
Definition: VectorInt.hpp:227
void visualiza(int nl=0, int num=0)
Visualiza el vector.
Definition: VectorInt.cpp:69
void redimensiona(int ncol)
Redimensiona el tamaño del vector.
Definition: VectorInt.hpp:140
int Col
Número de columnas del vector.
Definition: Vector_Base.hpp:54
char * Nmb
Nombre del vector.
Definition: Vector_Base.hpp:57
int retorna(const int col)
Retorna el valor de la columna col.
Definition: VectorInt.hpp:210
~VectorInt()
Destructor de la clase.
Definition: VectorInt.hpp:133
VectorInt(const int col)
Constructor de la clase.
Definition: VectorInt.hpp:95
VectorInt(void)
Constructor de la clase.
Definition: VectorInt.hpp:75
VectorInt(const int col, int val)
Constructor de la clase.
Definition: VectorInt.hpp:105
Clase base para el trabajar con vectores.
Definition: Vector_Base.hpp:49
VectorInt(const int col, const int val, const char *nmb)
Constructor de la clase.
Definition: VectorInt.hpp:116
void inicializa(const int val)
Inicializa el vector al valor val indicado.
Definition: VectorInt.cpp:59
int columnas(void)
Retorna el número de columnas del vector.
Definition: Vector_Base.hpp:105