| 
  Universidad de Costa Rica  | 
 | 
| ![[<=]](../../../img/back.gif)  ![[home]](../../../img/home.gif)  | ![[<>]](../../../img/index.gif)  | ![[\/]](../../../img/bottom.gif)  ![[=>]](../../../img/next.gif)  | 
Acumulador
| uncrustify.exe -c ADHcrusti.cfg --no-backup Acumulador.h | 
| 
#ifndef Acumulador_h
#define Acumulador_h ///< Evita la inclusión múltiple
class Acumulador{private:long m_total;long m_cantidad;long m_menor;long
m_mayor;public:Acumulador():m_total(0),m_cantidad(0),m_menor(0)
,m_mayor(0){/*borre();*/}~Acumulador(){}Acumulador(const
Acumulador&o){*this=o;}const Acumulador& operator=(const Acumulador&o){
m_total=o.m_total;m_cantidad=o.m_cantidad;m_menor
=o.m_menor;m_mayor=o.m_mayor;return*this;}void borre()
{m_total = m_cantidad = m_menor = m_mayor = 0;}long total() const{
return((m_cantidad <= 2) ? 0 : m_total-m_menor-m_mayor);}long
cantidad() const{return m_cantidad;}void acumule(long
val){m_total += val;m_cantidad++;if(m_cantidad > 1){
m_menor =( val < m_menor ? val : m_menor);m_mayor =( val > m_mayor
? val : m_mayor);}else{m_menor = m_mayor = val;}}void acumule( unsigned
n, const long * val){for(unsigned i=0; i<n; ++i){acumule(val[i]);
}}friend bool operator==(const Acumulador&A,const Acumulador&B){return(
A.m_total==B.m_total&&A.m_cantidad==B.m_cantidad&&A.m_menor==B.m_menor
&&A.m_mayor==B.m_mayor);}friend bool operator!=(const Acumulador&A,const
Acumulador&B){return!(A==B);}friend bool check_ok( const Acumulador&
A);friend class test_Acumulador;}; /* bool */
#endif
 | 
| 
bool check_ok( const Acumulador& A){if( // Acumulador.cpp
!(&A!=0)){return false;}if(!(A.m_menor <= A.m_mayor)){return false;}if(!
(A.m_cantidad >= 0)){return false;}if((A.m_cantidad==0)&&((A.m_total !=0)
||(A.m_menor!=0)||(A.m_mayor != 0))){return false;}if((A.m_cantidad==1)
&&((A.m_total != A.m_mayor)||(A.m_menor != A.m_mayor))){return false;}
return true;}
 | 
Acumulador     
El objetivo de esta tarea programada es darle la oportunidad de 
tomar un programa C++ completo para que usted le agregue la 
documentación y aprenda a compilarlo. Tome esta
implementación de la clase Acumulador y 
dele formato de acuerdo a las convenciones de programación 
definidas en el curso. Haga tanto la documentación
interna
como la documentación
externa, y construya un sitio Internet en donde instale tanto el código fuente como su documentación. Use
Doxygen. Ejecute 
el programa paso a paso, usando el depurador simbólico. 
Entregue un reporte en el que relate su experiencia.
Su reporte debe permitirle a una persona ajena al tema entender qué hizo y cómo lo hizo. Además, también debe servir para que esa persona pueda repetir el ejercicio desarrollado. Usted sabrá que su documentación es deficiente si solo le sirve a quien haya asistido a las lecciones del curso.
http://www.di-mare.com/adolfo/p/Indentacion.htm
| Fuentes para Doxygen | 
/** Calcula el Máximo Común Divisor de los números \c "x" y \c "y".
    - Se usa el algoritmo de Euclides para hacer el cálculo.
    - <code> mcd(x,y) >= 1 </code> siempre.
    - MCD <==> GCD: <em> Greatest Common Divisor </em>.
    \pre
    <code> (y != 0) </code>
*/
long mcd(long x, long y);
 | 
| Documentación generada por   | long mcd ( long x, long y ) Calcula el Máximo Común Divisor de los números "x" y "y". 
 
 | 
     
Luego de escribir la documentación de su programa 
envíe su trabajo por
correo electrónico. Para esto, haga un archivo empacado
.zip
cuyo nombre sea su número de carnet. Incluya en ese archivo 
lo siguiente:
.zip).*.c, *.cpp, *.h, etc.)..url
que permita abrir la página Internet en que está la documentación completa de su programa.     
Las cuentas de computador en la
ECCI se asignan de acuerdo 
al número de carnet. Por ejemplo, si su carnet es el 
número 95-28-09, para entregar su tarea usted debe crear el 
archivo
952809.zip
para enviarlo por
correo electrónico. Si varios alumnos participaron en 
la confección de la tareas, sus carnets deben incluirse en 
el nombre del archivo .zip:
952809-952810-952811.zip.
     
Luego haga en su cuenta personal un subdirectorio llamado 
public_html, que es bajo el que se instalan todas sus 
páginas Internet. Por ejemplo, si su solución 
está en el archivo
HTML
llamado
"OLP/t3sol952809.htm", entonces usted debe instalar esa 
página en el archivo
     
public_html/OLP/t3sol952809.htm
de su cuenta. Luego, para acceder esa página Internet, debe 
entrar a este sitio:
     
http://anubis.ecci.ucr.ac.cr/~e952809/OLP/t3sol952809.htm
| [InternetShortcut] URL=http://anubis.ecci.ucr.ac.cr/~e952809/OLP/t3sol952809.htm | 
952809.url
     
Como todas las cuentas de estudiante son la letra "e" seguida del 
número de carnet, para el estudiante de carnet "952809" la 
cuenta es
"e952809".
Para indicarle al servidor Internet a cuál cuenta entrar se 
usa el caracter "~" (Alt-126), seguido del nombre de 
la cuenta:
"~e952809".
En este caso, el archivo de acceso rápido a su página Internet se llamaría "952809.url".
Después de la fecha de entrega del programa, puede usted instalar en su cuenta personal su solución (no instale antes su solución en Internet, pues en ese caso sería usted culpable de facilitar la copia de su trabajo, y en consecuencia se haría acreedor a la sanción respectiva).
     
Por ejemplo, para entregar su tarea programada, el estudiante
952809
crea su archivo 952809.zip en el que aparece estos 
archivos (este alumno no hizo los programas de prueba):
Acumulador.h
Acumulador" para sumar secuencias de 
números enteros
Acumulador.cpp
Acumulador.h"
test_Acumulador.cpp
Acumulador
BUnit.h
952809.doc
952809.htm
952809.dxg
952809.url
test_Acumulador.cbp
test_Acumulador.dsp
test_Acumulador.vcproj
test_Acumulador.dev
| Tiempo de entrega: | 7 días | |
| Modalidad: | Individual | 
     http://www.di-mare.com/adolfo/p/convpas.htm
     
     http://java.sun.com/docs/codeconv/CodeConventions.pdf
     
| 
 | 
![[mailto:]](../../../img/mailbox.gif) Adolfo Di Mare <adolfo@di-mare.com>.
  Adolfo Di Mare <adolfo@di-mare.com>.
| ![[home]](../../../img/home.gif)  |   | ![[/\]](../../../img/top.gif)  |