Está en la página 1de 7

Pauta Solemne

Ejercicio 1 - Solemne 1, 2013


#include <iostream>
using namespace std;
//Solución posible explicada paso a paso
//Siempre asumiremos que el usuario ingresa los datos correctamente

int main()
{
//Declaramos las variables a utilizar. Usamos un solo tipo por simplicidad
//Variables que ingresa el usuario
double numero_plan;
double monto_consulta;

//Otras variables que utiliza el programa y que no ingresa el usuario


double porcentaje;
double tope;
double reembolso;

//Pedimos los datos al usuario


cout<<"Ingrese el numero de su plan"<<endl;
cin>>numero_plan;
cout<<"Ingrese el monto de la consulta"<<endl;
cin>>monto_consulta;

//Acá trabajaremos con los datos


//Dividimos en 100 para trabajar con el decimal que corresponde al porcentaje de
reembolso sobre el monto de la consulta
//El hecho de usar double como tipo de dato nos ayuda a que el resultado de la
división quede con los decimales.
porcentaje=4*numero_plan/100;

reembolso=monto_consulta*porcentaje;

//Acá determinamos el Tope que era 2000 por el numero de plan


tope=2000*numero_plan;

//Acá determinamos SI el reembolso es mayor que el Tope, entonces devolvemos el


Tope, sino, devolvemos el reembolso
//En pocas palabras, devolvemos el menor valor entre tope y reembolso. Si son iguales,
devolvemos solo uno (cualquiera) de ellos.
//En este caso, el que sean iguales está considerado en el "else"

if(reembolso>tope)
{
cout<<"El monto a devolver (reembolsar) por la consulta es: "<<tope<<endl;;
}
else
{
cout<<"El monto a devolver (reembolsar) por la consulta es: "<<reembolso<<endl;
}

system("pause");
return 0;
}

Ejercicio 2 - Solemne 1, 2013


Solución 1
#include <iostream>
using namespace std;
int main()
{
//Declaramos las variables a utilizar.
//Variables que ingresa el usuario
int numero_ganador; //Se declara del tipo entero pues necesitamos trabajar con
divisiones y restos.
int numero_jugado; //Se declara del tipo entero pues necesitamos trabajar con
divisiones y restos.
double monto_premio_mayor;

//Otras variables que utiliza el programa y que no ingresa el usuario


double premio_obtenido=0;
//Almacenará el premio que logro el usuario. Parte en cero por si acaso no logró
ninguna coinciencia.
//El caso del cero no es parte de la evaluacion.
int validacion;
//Acá guardaremos el resultado de las validaciones con los numeros de carton y nos
ayudará para realizar los IF de más abajo

//Pedimos los datos al usuario


cout<<"Ingrese el numero ganador"<<endl;
cin>>numero_ganador;
cout<<"Ingrese el numero que usted tiene (numero jugado)"<<endl;
cin>>numero_jugado;
cout<<"Ingrese el monto del premio mayor"<<endl;
cin>>monto_premio_mayor;

//Como los premios no son acumulativos, vamos a ir viendo los casos uno por uno
(desde el que menos premia al que más premia)
//e iremos sobreescribiendo la variable "premio_obtenido" para guardar allí el monto
obtenido como premio.

//=======================================================================
=====================================
//Caso 1: Solo coincide el último número entre el numero ganador y el numero jugado.
//En este caso, los divido por 10.
//Si esta división tiene idéntico módulo, entonces los tres ultimos numeros eran iguales.
//Este caso es el mismo que el, pero con un número en vez de tres

//=======================================================================
=====================================

if(numero_ganador%10==numero_jugado%10)
{
premio_obtenido=2000; //2000 por obtener coicidencia del ultimo número
}

//=======================================================================
=====================================
//Caso 2: Terna. Esto ocurre cuando coinciden los tres ultimos numeros del numero
ganador con el numero jugado.
//En este caso, los divido por 1000.
//Si esta división tiene idéntico módulo, entonces los tres ultimos numeros eran iguales.
//Este caso es el mismo que el anterior, pero con tres numeros en vez de 1

//=======================================================================
=====================================

if(numero_ganador%1000==numero_jugado%1000)
{
premio_obtenido=monto_premio_mayor*0.02; //2% del premio mayor
}

//=======================================================================
=====================================
//Caso 3: Aproximación. Coinciden los primeros cuatro numeros. En este caso,
realizamos la división por 10
//de cada numero. Si son iguales, entonces coinciden los 4 primeros. Como usamos INT,
el resto no importa.

//=======================================================================
=====================================

if(numero_jugado/10==numero_ganador/10)
{
premio_obtenido=monto_premio_mayor*0.05; //5% del premio mayor
}

//=======================================================================
=====================================
//Caso 4: Premio mayor. Si la resta de ambos numeros (ganador y jugado) es cero,
entonces son el mismo numero.

//=======================================================================
=====================================
validacion=numero_ganador-numero_jugado;
if(validacion==0)
{
premio_obtenido=monto_premio_mayor;
}

//Acá imprimimos el mensaje con el monto que se obtuvo de premio


cout<<"Usted ha obtenido un premio de: "<<premio_obtenido<<" pesos"<<endl;

system("pause");
return 0;
}

#include <iostream>
using namespace std;
//Solución posible explicada paso a paso
//Siempre asumiremos que el usuario ingresa los datos correctamente

Solución II

int main()
{
//Declaramos las variables a utilizar.
//Variables que ingresa el usuario
int numero_ganador; //Se declara del tipo entero pues necesitamos trabajar con
divisiones y restos.
int numero_jugado; //Se declara del tipo entero pues necesitamos trabajar con
divisiones y restos.
double monto_premio_mayor;

//Otras variables que utiliza el programa y que no ingresa el usuario


double premio_obtenido=0;
//Almacenará el premio que logro el usuario. Parte en cero por si acaso no logró
ninguna coinciencia.
//El caso del cero no es parte de la evaluacion.
int validacion;
int validacion2;
//Acá guardaremos el resultado de las validaciones con los numeros de carton y nos
ayudará para realizar los IF de más abajo

//Pedimos los datos al usuario


cout<<"Ingrese el numero ganador"<<endl;
cin>>numero_ganador;
cout<<"Ingrese el numero que usted tiene (numero jugado)"<<endl;
cin>>numero_jugado;
cout<<"Ingrese el monto del premio mayor"<<endl;
cin>>monto_premio_mayor;

//Como los premios no son acumulativos, vamos a ir viendo los casos uno por uno
(desde el que menos premia al que más premia)
//e iremos sobreescribiendo la variable "premio_obtenido" para guardar allí el monto
obtenido como premio.

//=======================================================================
=====================================
//Caso 1: Solo coincide el último número entre el numero ganador y el numero jugado.
//En este caso, los divido por 10.
//Si esta división tiene idéntico módulo, entonces los tres ultimos numeros eran iguales.
//Este caso es el mismo que el, pero con un número en vez de tres

//=======================================================================
=====================================
if(numero_ganador%10==numero_jugado%10)
{
premio_obtenido=2000; //2000 por obtener coicidencia del ultimo número
}

//=======================================================================
=====================================
//Caso 2: Terna. Esto ocurre cuando coinciden los tres ultimos numeros del numero
ganador con el numero jugado.
//En este caso, los divido por 1000.
//Si esta división tiene idéntico módulo, entonces los tres ultimos numeros eran iguales.
//Este caso es el mismo que el anterior, pero con tres numeros en vez de 1

//=======================================================================
=====================================

if(numero_ganador%1000==numero_jugado%1000)
{
premio_obtenido=monto_premio_mayor*0.02; //2% del premio mayor
}

//=======================================================================
=====================================
//Caso 3: Aproximación. Coinciden los primeros cuatro numeros. En este caso,
realizamos la resta de ambos numeros y
//si la resta dividada en 10 es 0, entonces tenemos que dicha resta tiene solo unidades
(un solo numero).
//Luego, validado lo anterior, realizamos la división con modulo y si el resultado de la
resta y el módulo de la división
//son iguales, entonces coinciden.
//En este caso es muy importante que, primero, ordenemos los numeros ganador y
jugado para realizar la operación con el mayor restando
//al menor y con el mayor dividiendo al menor. Sino, no resultará.
//Ejemplo: 12346-12345=1 (tiene solo un dígito el resultado de la resta) ; 12346%12345=1

//=======================================================================
=====================================

//Aquí vemos cual es mayor y cual es menor para guardar nuestros validadores
if(numero_ganador>numero_jugado)
{
validacion=numero_ganador-numero_jugado;
if(validacion/10==0)
{
validacion2=numero_ganador%numero_jugado;
}
else
{
validacion2=0;
}
}
else
{
validacion=numero_jugado-numero_ganador;
if(validacion/10==0)
{
validacion2=numero_jugado%numero_ganador;
}
else
{
validacion2=0;
}
}

//Aquí comparamos que los validadores sean iguales


if(validacion==validacion2)
{
premio_obtenido=monto_premio_mayor*0.05; //5% del premio mayor
}

//=======================================================================
=====================================
//Caso 4: Premio mayor. Si la resta de ambos numeros (ganador y jugado) es cero,
entonces son el mismo numero.

//=======================================================================
=====================================
validacion=numero_ganador-numero_jugado;
if(validacion==0)
{
premio_obtenido=monto_premio_mayor;
}

//Acá imprimimos el mensaje con el monto que se obtuvo de premio


cout<<"Usted ha obtenido un premio de: "<<premio_obtenido<<" pesos"<<endl;

system("pause");
return 0;
}

Ejercicio 3 - Solemne 1, 2013


#include <iostream>
using namespace std;
//Solución posible explicada paso a paso
//Siempre asumiremos que el usuario ingresa los datos correctamente

int main()
{
//Declaramos las variables a utilizar.
//Variables que ingresa el usuario
int respuesta; //Recordemos que el usuario ingresará un 1 para SI y un 2 para NO
//Otras variables que utiliza el programa y que no ingresa el usuario
bool validar=true; //Para mantener el ciclo While y si se da el caso en que el usuario
responde 1, cambiar a false y salir.

while(validar)
{
cout<<"Votara usted en las siguientes elecciones? 1. SI / 2. NO"<<endl;
cin>>respuesta;
if(respuesta==1)
{
cout<<"Te felicito por ser un ejemplo de ciudadano"<<endl;
validar=false; //Cambiamos el valor de "validar" para poder salir del ciclo
}
else if(respuesta==2)
{
cout<<"Estas seguro? ES TU DEBER CIUDADANO"<<endl;
cout<<"==================================="<<endl;
//No cambiamos el valor de "validar" ya que queremos que vuelva al ciclo
}
}

system("pause");
return 0;
}