Universidad de Costa Rica
Escuela de Ciencias de la
Computación e Informática
Profesor Adolfo Di Mare
CI-1101
II Semestre 2000
[<=] [home] [<>] [\/] [=>]
CI-1101 Programación I

Tarea #4 [solución]

Una clase C++ para años bisiestos

      Complete el programa lab04.cpp, para que, de manera interactiva, indique si un año es bisiesto o no. Envíe por correo electrónico a los asistentes del curso el archivo resultante. Además, en su mensaje incluya tambié el resultado de ejecutar el programa.

Envío de tareas por correo electrónico

[mailto:]Andrés Arias y Tomás Rodríguez

// bool.h (C) 2000 adolfo@di-mare.com

/*  resultado
    Define el tipo "bool" para hacer compatibles los programas C++
    con compiladores estándar.
    - De esta manera, se puede usar el tipo "bool" en compiladores
      antiguos, como el Borland C++ v3.1
*/

#ifndef _bool_h
#define _bool_h
    #ifdef __BORLANDC__               // Definida para Borland C++
        #if (__BORLANDC__ <= 0x0410)  // Definida para v3.1
            typedef int bool;
            const int false = 0;
            const int true  = ! false;
        #endif
    #endif
#endif // _bool_h

// EOF: bool.h
// lab04.cpp  (c) 2000 adolfo@di-mare.com

/*  resultado:
    Este programa interactivo recibe un año A y responde si el año
    es o no bisiesto. Escoja el año A=0 para detener el programa.

    Cálculo del año bisiesto:
    Dado un año "A", "A" es bisiesto si es múltiplo de 4, exceptuando
    los múltiplos de 100, que no son bisiestos, a menos que sean
    múltiplos de 400.

    Por ejemplo:

    1998 no es múltiplo de 4, por lo tanto, no es bisiesto.
    1900 es múltiplo de 4 y de 100, pero no es múltiplo de 400,
         entonces no es bisiesto.
    2000 sí es bisiesto.
    1988 sí es bisiesto.
*/

#include <iostream>
#include <bool.h>

class ano {
private:
    int _ano;
    int _dias;  // cantidad de días del año
public:
    // constructores
    ano() : _ano(0), _dias(366) {}
    ano(ano& o) : _ano(o._ano), _dias(o._dias) {}
    ano(int a) : _ano(a) {_dias = (es_bisiesto() ? 366 : 365);}

    ano& operator=(ano& o) { _ano = o._ano; _dias = o._dias; return *this; }

    // métodos
    bool es_bisiesto();
    int  dias_del_mes(int mes);
    int  dias() { return _dias; }

    // convertidor
    operator int() { return _ano; }

    friend istream& operator>> (istream& s, ano& a);
}; // ano


bool ano::es_bisiesto() {
/*  resultado:
    Retorna "true" cuando el año sí es bisiesto */

} // ano::es_bisiesto()


int ano::dias_del_mes(int mes) {
/*  resultado:
    Retorna la cantidad de días que tiene el i-ésimo mes del año */

} // dias_del_mes()


istream& operator>> (istream& s, ano& ANO) {
    s >> ANO._ano;
    ANO._dias = (ANO.es_bisiesto() ? 366 : 365);

    return s;
} // operator>> ()


int main() {

} // main()

// EOF: lab04.cpp
Figura 1: lab04.cpp
Tiempo de entrega: 1 semana
Modalidad: Individual

Soluciones

[mailto:] Adolfo Di Mare <adolfo@di-mare.com>.
Copyright © 2000
Derechos de autor reservados © 2000
[home] <> [/\]