LP 2023-I IIIME A OMAR MORENO
CLASE 10
CODIGO DE LA PRACTICA CALIFICADA
#include <iostream>
#include <cmath>
using namespace std;
// Declaración de funciones
int SUMAR(int x, int y);
double SERIE_SENO(int x);
int fecha_valida(int dia, int mes, int anio);
int bisiesto(int anio);
int calcular_edad(int dia_nacimiento, int mes_nacimiento, int anio_nacimiento, int dia_actual, int mes_actual, int anio_actual);
double convertir_a_radianes(double grados);
double convertir_a_centesimales(double grados);
int main() {
int angulo, Opcion, a, b, dia_nac, mes_nac, anio_nac, dia_act, mes_act, anio_act;
do {
cout << " M E N U de FUNCIONES \n";
cout << "------------ \n";
cout << "1.- SUMA \n";
cout << "2.- SERIE SENO \n";
cout << "3.- Calcular Edad \n";
cout << "4.- Convertir Grados \n";
cout << "0.- Salir \n";
cout << "INGRESE UNA OPCION <> 0: "; cin >> Opcion;
switch (Opcion) {
case 1: {
cout << "1.- SUMA DE DOS NUMEROS \n";
cout << "Ingrese el numero 1: "; cin >> a;
cout << "Ingrese el numero 2: "; cin >> b;
int A = SUMAR(a, b);
cout << "La suma es: " << A << endl;
break;
}
case 2: {
cout << "2.- SERIE SENO \n";
cout << "Ingrese el valor del angulo: "; cin >> angulo;
double B = SERIE_SENO(angulo);
cout << "La suma de la serie seno es: " << B << endl;
break;
}
case 3: {
cout << "3.- Calcular Edad \n";
cout << "Ingrese la fecha de nacimiento (DD MM AAAA): ";
cin >> dia_nac >> mes_nac >> anio_nac;
cout << "Ingrese la fecha actual (DD MM AAAA): ";
cin >> dia_act >> mes_act >> anio_act;
int edad = calcular_edad(dia_nac, mes_nac, anio_nac, dia_act, mes_act, anio_act);
cout << "La edad es: " << edad << " años" << endl;
break;
}
case 4: {
cout << "4.- Convertir Grados \n";
double grados;
cout << "Ingrese los grados sexagesimales: ";
cin >> grados;
double radianes = convertir_a_radianes(grados);
double centesimales = convertir_a_centesimales(grados);
cout << "Grados en radianes: " << radianes << endl;
cout << "Grados en centesimales: " << centesimales << endl;
break;
}
}
} while (Opcion != 0);
return 0;
}
// Función de suma
int SUMAR(int x, int y) {
return x + y;
}
// Función para calcular la serie seno
double SERIE_SENO(int x) {
const double PI = 3.141592;
double RAD = (2 * PI * x) / 360;
int n;
double SUMA = RAD;
int CC = 0;
int FACT = 1;
cout << "Cuántos términos sumar: ";
cin >> n;
for (int c = 1; c <= n; c += 2) {
double M = pow(RAD, c);
int N = FACT * c;
CC++;
if (CC % 2 != 0)
SUMA = SUMA + M / N;
else
SUMA = SUMA - M / N;
}
return SUMA;
}
// Función para validar una fecha
int fecha_valida(int dia, int mes, int anio) {
// Validación básica: mes entre 1 y 12, y día dentro de los límites de cada mes
if (mes < 1 || mes > 12 || dia < 1)
return 0;
if (mes == 2) {
if (bisiesto(anio))
return dia <= 29;
else
return dia <= 28;
} else if (mes == 4 || mes == 6 || mes == 9 || mes == 11) {
return dia <= 30;
} else {
return dia <= 31;
}
}
// Función para determinar si un año es bisiesto
int bisiesto(int anio) {
return (anio % 4 == 0 && anio % 100 != 0) || (anio % 400 == 0);
}
// Función para calcular la edad
int calcular_edad(int dia_nacimiento, int mes_nacimiento, int anio_nacimiento, int dia_actual, int mes_actual, int anio_actual) {
if (!fecha_valida(dia_nacimiento, mes_nacimiento, anio_nacimiento) || !fecha_valida(dia_actual, mes_actual, anio_actual)) {
cout << "Fechas inválidas." << endl;
return -1;
}
int edad = anio_actual - anio_nacimiento;
if (mes_actual < mes_nacimiento || (mes_actual == mes_nacimiento && dia_actual < dia_nacimiento))
edad--;
return edad;
}
// Función para convertir grados sexagesimales a radianes
double convertir_a_radianes(double grados) {
const double PI = 3.141592;
return (grados * PI) / 180;
}
// Función para convertir grados sexagesimales a grados centesimales
double convertir_a_centesimales(double grados) {
return (grados * 100) / 90;
}