// lab03.cpp   (C) 2000 adolfo@di-mare.com

/** \file  lab03.cpp
    \brief Ejemplos de uso de \c while() y de \c for(;;).

    \author Adolfo Di Mare <adolfo@di-mare.com>
    \date   2000
*/


#include <iostream>

/// Muestra cómo se calcula \c X^n usando \c while().
int main_while() {
    long  n, i, res;
    float X;

    cout << endl;
    cout << "Entre X: "; cin >> X;
    cout << "Entre n: "; cin >> n;

    i = 1; res = 1;
    while (i <= n) {     // while
        res *= X;
        ++i;
    }

    cout << "X^n == " << res << endl;
    return 0;
}


#include <iostream>

/// Muestra cómo se calcula \c X^n usando \c for(;;).
int main_for() {
    int   n, i, res;
    float X;

    cout << endl;
    cout << "Entre X: "; cin >> X;
    cout << "Entre n: "; cin >> n;

    for (i=1, res=1; i <= n; ++i) {  // for (;;)
        res *= X;
    }

    cout << "X^n == " << res << endl;
    return 0;
}


#include <iostream>  // cin -- cout
#include <iomanip.h>   // set..(io)

/// Calcula promedios de clase, usando un valor como sentinela.
int main_promedio() {
    int   total,       // total de notas
          n,           // cantidad de notas ingresadas
          nota;        // una nota
    float promedio;    // promedio, con punto decimal

    // fase de inicialización
    n     = 0;
    total = 0;
    cout << endl;

    // fase de proceso
    cout << "Ingrese cada nota, -1 para terminar: ";
    cin  >> nota;

    while ( nota != -1 ) {
        total = total + nota;
        n = n + 1;
        cout << "Ingrese cada nota, -1 para terminar: ";
        cin >> nota;
    }

    // fase de conclusión
    if ( n != 0 ) {
        promedio = (float)(total) / (float)n;
        cout << "El promedio de la clase es " << setprecision( 2 )
             << setiosflags( ios::fixed | ios::showpoint )
             << promedio << endl;
    } else {
        cout << "Ninguna nota fue ingresada" << endl;
    }

    return 0;   // indica que el programa terminó con éxito
}

/// Programa principal.
/// - Invoca a las demás rutínas \c main().
int main() {
    int ret;  // código de retorno del programa principal

    ret = main_while();
    if (ret != 0) {
        cout << "ERROR: " << ret << "main_while()";
    }

    ret = main_for();
    if (ret != 0) {
        cout << "ERROR: " << ret << "main_for()";
    }

    ret = main_promedio();
    if (ret != 0) {
        cout << "ERROR: " << ret << "main_promedio()";
    }

    return 0;
}

// EOF: lab03.cpp