Código:
// Fig. 4.8: LibroCalificaciones.h
// Definición de la clase LibroCalificaciones que determina el promedio de una clase.
// Las funciones miembro se definen en LibroCalificaciones.cpp
#include <string> // el programa usa la clase string estándar de C++
using std::string;
// definición de la clase LibroCalificaciones
class LibroCalificaciones
{
public:
LibroCalificaciones( string ); // el constructor inicializa el nombre del curso
void establecerNombreCurso( string ); // función para establecer el nombre del curso
string obtenerNombreCurso(); // función para obtener el nombre del curso
void mostrarMensaje(); // muestra un mensaje de bienvenida
void determinarPromedioClase(); // promedia las calificaciones escritas por el usuario
private:
string nombreCurso; // nombre del curso para este LibroCalificaciones
}; // fin de la clase LibroCalificaciones
Código:
// Fig. 4.9: LibroCalificaciones.cpp
// Definiciones de funciones miembro para la clase LibroCalificaciones que resuelve
// el programa del promedio de la clase con repetición controlada por contador.
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
#include "LibroCalificaciones.h" // incluye la definición de la clase LibroCalificaciones
// el constructor inicializa a nombreCurso con la cadena que se suministra como argumento
LibroCalificaciones::LibroCalificaciones( string nombre )
{
establecerNombreCurso( nombre ); // valida y almacena nombreCurso
} // fin del constructor de LibroCalificaciones
// función para establecer el nombre del curso;
// asegura que el nombre del curso tenga cuando menos 25 caracteres
void LibroCalificaciones::establecerNombreCurso( string nombre )
{
if ( nombre.length() <= 25 ) // si nombre tiene 25 caracteres o menos
nombreCurso = nombre; // almacena el nombre del curso en el objeto
else // si nombre es mayor de 25 caracteres
{ // establece nombreCurso a los primeros 25 caracteres del parámetro nombre
nombreCurso = nombre.substr( 0, 25 ); // selecciona los primeros 25 caracteres
cout << "El nombre \"" << nombre << "\" excede la longitud maxima (25).\n"
<< "Se limito nombreCurso a los primeros 25 caracteres.\n" << endl;
} // fin de if...else
} // fin de la función establecerNombreCurso
// función para obtener el nombre del curso
string LibroCalificaciones::obtenerNombreCurso()
{
return nombreCurso;
} // fin de la función obtenerNombreCurso
// muestra un mensaje de bienvenida al usuario de LibroCalificaciones
void LibroCalificaciones::mostrarMensaje()
{
cout << "Bienvenido al libro de calificaciones para \n" << obtenerNombreCurso() << "!\n"
<< endl;
} // fin de la función mostrarMensaje
// determina el promedio de la clase, con base en las 10 calificaciones escritas por el usuario
void LibroCalificaciones::determinarPromedioClase()
{
int total; // suma de las calificaciones introducidas por el usuario
int contadorCalif; // nuúmero de la calificación a introducir a continuación
int calificacion; // el valor de la calificacion introducida por el usuario
int promedio; // promedio de calificaciones
// fase de inicialización
total = 0; // inicializa el total
contadorCalif = 1; // inicializa el contador del ciclo
// fase de procesamiento
while ( contadorCalif <= 10 ) // itera 10 veces
{
cout << "Escriba una calificacion: "; // pide la entrada
cin >> calificacion; // recibe como entrada la siguiente calificación
total = total + calificacion; // suma la calificación al total
contadorCalif = contadorCalif + 1; // incrementa el contador por 1
} // fin de while
// fase de terminación
promedio = total / 10; // la división de enteros produce un resultado entero
// muestra el total y el promedio de las calificaciones
cout << "\nEl total de las 10 calificaciones es " << total << endl;
cout << "El promedio de la clase es " << promedio << endl;
} // fin de la función determinarPromedioClase
Código:
// Fig. 4.10: fig04_10.cpp
// Crea un objeto LibroCalificaciones e invoca a su función determinarPromedioClase.
#include "LibroCalificaciones.h" // incluye la definición de la clase LibroCalificaciones
int main()
{
// crea un objeto LibroCalificaciones llamado miLibroCalificaciones y
// pasa el nombre del curso al constructor
LibroCalificaciones miLibroCalificaciones( "CS101 Programacion en C++" );
miLibroCalificaciones.mostrarMensaje(); // muestra el mensaje de bienvenida
miLibroCalificaciones.determinarPromedioClase(); // busca el promedio de 10 calificaciones
return 0; // indica que el programa terminó correctamente
} // fin de main