1.- Dado el siguiente Programa indique:
a.- ¿Qué hace el programa? (4 Puntos)
b.- ¿Cuál es el valor final de resultados [8]? (4 Puntos)
2.- En Venezuela el gobierno venezolano implemento la venta de gasolina subsidiada por numero de finalización de placa, veamos el calendario de enero 2023:
Elabore un programa en el cual se ingrese cualquier fecha entre el 01 de enero de 2023 hasta el 31 de diciembre del 2050 y el programa reporte cuales par de números de placa pueden surtir ese día. Nota: Solo use la biblioteca “iostream” considere los años bisiestos: 2024, 2028, 2032, 2036, 2040, 2044 y 2048. (12 puntos)
Solución
Hagamos primero un breve análisis antes de colocar la respuesta.
Cuando se revisa el primer programa no damos cuenta que los valores contenidos en el arreglo "datos" son pasados por un grupo de ecuaciones intermedias generando un nuevo numero que es guardado en el arreglo "resultados" en orden inverso, o sea, el ultimo elemento del arreglo datos (elemento Nro. 10) es trabajado y el resultado guardado en la posición Nro. 1 del arreglo resultados, el penúltimo de datos en la posición Nro.2 de resultados, el antepenúltimo en la posición Nro.3 y así sucesivamente. (La posición cero se ignora)
Veamos como trabaja las ecuaciones intermedias, para esto revisemos la antepenúltima posición (Posición Nro 8), esa posición contiene al numero: 8724.66,
veamos cual es el valor de d, según el programa 8724.66/1000=8.72466
pero resulta que d es un valor entero en consecuencia solo registrara la parte entera de la operación d=8
veamos cual es el valor c, b y a:
según la matemática c=7.2466 b=2.466 y a=4.66, pero al ser las tres variables enteras los valores seria c=7, b=2 y a=4, luego el programa construye el numero que guarda en resultado[3]=4*1000+2*100+7*10+8=> resultado[3]=4278, como se puede observar el numero generado es el inverso de la parte entera del dato original datos[8]=8724.66.
El programa le aplica ese proceso a cada numero por separado.
En consecuencia la respuesta de la parte "a" correspondería a:
"El programa toma los valores del arreglo Datos, extrae la parte entera, invierte sus dígitos y los guarda en el arreglo resultados en sentido inverso, el último de datos en la posición Nro. 1 de resultados y así sucesivamente."
En la parte "b" se nos consulta cual será el valor final de resultados[8], el programa para generar resultados[8] utiliza el numero contenido en datos[3]= π + 7770 => datos[3] = 7773.141592, conociendo como trabaja el programa podemos concluir que:
"El valor final de resultados[8] será 3777"
Programa
/*Programa pregunta Nro. 2 Parcial Nro. 1 semestre 2023- II
En Venezuela el gobierno venezolano implemento la venta de gasolina
subsidiada por numero de finalización de placa,
Elabore un programa en el cual se ingrese cualquier fecha entre el 01
de enero de 2023 hasta el 31 de diciembre del 2050 y el programa reporte
cuales par de números de placa pueden surtir ese día.
Nota: Solo use la biblioteca "iostream" considere los años bisiestos:
2024, 2028, 2032, 2036, 2040, 2044 y 2048.
Elaborado por: Carlos Ferrer
Rev. 0*/
#include<iostream>
using namespace std;
main()
{
int dd=1,mm=1,aa=2023; //Dia ,Mes y año desde 01/01/2023 al 31/12/2050
int dd_r,mm_r,aa_r; //Dia ,Mes y año a verificar
int aa_b[8]={0,2024,2028,2032,2036,2040,2044,2048}; //años bisiestos
int dia_adicional; //día adicional de los años bisiestos
int placa=8; // Placa inicial 01 de Enero de 2023
int fin_mes,i; //cantidad de días del mes varia dependiendo del mes / contador
// ingresamos los datos a verificar y validamos los rangos
do
{
cout <<"ingrese el a#o a revisar (2023 - 2050)"<<endl;
cin >>aa_r;
}
while (aa_r<2023 or aa_r>2050);
do
{
cout <<"ingrese el mes a revisar (1 - 12)"<<endl;
cin >>mm_r;
}
while (mm_r<1 or mm_r>12);
for(i=1;i<=7;i=i+1)
{
if (aa_r==aa_b[i])
{
dia_adicional=1;
break;
}
else
{
dia_adicional=1;
}
}
if (mm_r==11 or mm_r==6 or mm_r==9 or mm_r==4)
{
do
{
cout <<"ingrese el dia a revisar (1 - 30)"<<endl;
cin >>dd_r;
}
while (dd_r<1 or dd_r>30);
}
else
{
if (mm_r==2)
{
do
{
cout <<"ingrese el dia a revisar (1 - "<<28+dia_adicional<<")"<<endl;
cin >>dd_r;
}
while (dd_r<1 or dd_r>28+dia_adicional);
}
else
{
do
{
cout <<"ingrese el dia a revisar (1 - 31)"<<endl;
cin >>dd_r;
}
while (dd_r<1 or dd_r>31);
}
}
while (aa<=2050) //verificamos desde el 01/01/2023 hasta la fecha a verificar
{
for(i=1;i<=7;i=i+1) //determinamos si hay que agregar un día en febrero
{
if (aa==aa_b[i])
{
dia_adicional=1;
break;
}
else
{
dia_adicional=1;
}
}
while (mm<=12) //determinamos la cantidad de días del mes
{
if (mm==11 or mm==6 or mm==4 or mm==9)
{
fin_mes=30;
}
else
{
if (mm==2)
{
fin_mes=28+dia_adicional;
}
else
{
fin_mes=31;
}
}
while(dd<=fin_mes) //repetimos el ciclo hasta que termine el mes
{
if (dd==dd_r and mm==mm_r and aa==aa_r) //verificamos que la fecha sea la solicitada
{
system("cls"); //imprimimos los resultados
cout <<"Para el "<<dd<<"/"<<mm<<"/"<<aa<<" corresponden"<<endl;
if (placa==10)
{
cout <<"las placas = "<<placa-1<<" y 0"<<endl<<endl;
}
else
{
cout <<"las placas = "<<placa-1<<" y "<<placa<<endl<<endl;
}
break; //salimos de los ciclos
}
dd=dd+1; //incrementamos el día
if (placa==10) // reseteamos el ciclo de la placa
{
placa=0;
}
placa=placa+2; //incrementamos la placa
}
dd=1;// reseteamos el día
mm=mm+1; //incrementamos el mes
}
mm=1; //resteamos el mes
aa=aa+1; //incrementamos el año
}
}



No hay comentarios.:
Publicar un comentario