1.14 Ciclos con contador y con valor centinela

Veamos el siguiente programa que calcula el valor del número de Euler a partir de la serie 1/n!
En él el usuario ingresa la cantidad de términos a calcular y se calcula el valor de e al cabo de cada término.



// euler.cpp: Calcular el valor del número e a partir de la serie:
//  1 / 0! + 1/1! + 1/2! + 1/3! + 1/4! + .....
//

#include "stdafx.h"
#include <iostream>
using namespace std;
#include <iomanip>
using std::setprecision;  // para definir la cantidad de decimales a mostrar
void main()
{
       double e,t;  // double para dar más precisión (se puede probar con float)
       int i,f,n,j;
       cout<<"Ingrese cantidad de términos:";
       cin>>n;
       e=0;
       cout<< setprecision(16);  //acá defino la cantidad de cifras a mostrar.
       for(i=0;i<=n;i=i+1)
       {
             f=1;
             for(j=1;j<=i;j=j+1)
             {
                    f=f*j;
             }
             e = e + 1.0 / f;     // escribo 1.0 en lugar de 1 para que la operación no sea int
       cout<<i<<"  "<<e<<endl;
      
       }cin>>i;
}



Para resolverlo, hay un ciclo que lleva la variable i desde 0 hasta n (los términos de la serie). Para cada término, se debe calcular un factorial. Esto se hace con el segundo ciclo for, que lleva a la variable j desde 1 hasta i (para multiplicar todos los factores que forman el factorial). En ambos ciclos, se sabe al iniciarlos cuántas veces se ejecutarán (n, i) y hay una variable que va contando la cantidad de veces que se ejecutan (i, j).
Este tipo de ciclos que se ejecutan una cantidad definida de veces, se denominan ciclos con contador. Para estos ciclos es recomendable utilizar siempre la instrucción for.

Veamos el siguiente ejemplo:



// ejemplo7.cpp: Se ingresa un saldo inicial, y luego una serie de operaciones (ingresos o gastos). El ciclo finaliza cuando el saldo final es menor a cero
// 

#include "stdafx.h"
#include <iostream>
using namespace std;

void main()
{
       int saldo,monto;
       cout<<"Ingrese el saldo inicial:";
       cin>>saldo;
    while (saldo >= 0)
       {
             cout <<"Ingrese operacion:";
             cin>>monto;
             saldo = saldo + monto;
             cout << "su nuevo saldo es " <<saldo<<endl;
       };
       cout << "Se acabó el saldo disponible",

            
       cin>>monto;
}



En este caso, se realizan las operaciones hasta que se acaba el saldo. No es posible saber de antemano cuántas veces se ejecutará el ciclo. El ciclo terminará cuando la variable saldo alcance un valor menor que cero. Este tipo de ciclos que terminan cuando una variable (llamada variable de señal) alcanza un valor determinado, se denominan ciclos con valor señal o centinela. Por sus características, son más fácilmente programables con las instrucciones while ó do... while.

No hay comentarios:

Publicar un comentario