Solución

Anuncio
Programación C++ - Solución Examen de Septiembre 03
Pág.1
Ejercicio 1
#include <iostream.h>
#include <stdlib.h>
#include <math.h>
double CalculaCuota( double cap, double interes, int num);
double CalculaPagos(double *capp, double *capam, double *intepag,double cap, double
interes, int num);
int CalculaMeses(double cap, double interes, double cuota, int MesMax);
void ImprimePagos(double *capp, double *capam, double *intepag, int mess, double);
void main()
{
double cap,interes,cuota;
int meses,edad;
char ch;
double *capp, *capam,*intepag;
system("cls");
while(1){
cout <<
cout <<
cout <<
cout <<
"Capital?:"; cin >> cap;
"Interes Anual(%)?:"; cin >> interes;
"Cuota a pagar?:"; cin >> cuota;
"Edad?:"; cin >> edad;
//comprobar >18 y menor de 65
meses = CalculaMeses(cap,interes,cuota,(65-edad)*12);
if (meses == 0){
cout << "No se puede.. \nSuba la cuota o Baje el capital";
}
else {
cout << "Los meses a pagar son:" << meses;
//reservar memoria
capp = new double[meses+1];
capam = new double[meses+1];
intepag = new double[meses+1];
cuota = CalculaPagos(capp,capam,intepag,cap,interes,meses);
ImprimePagos(capp,capam,intepag,meses,cuota);
delete [] capp;
delete [] capam;
delete [] intepag;
}
cout << "\nDesea continuar (s/n)?";
cin >> ch;
if (ch=='n' || ch=='N') break;
}
cout << "\nAdios.." <<endl;
}
int CalculaMeses(double cap, double interes, double cuota, int MesMax)
{
int mes=0;
double ct;
for (int i=1; i<=MesMax; i++){
ct = CalculaCuota(cap,interes,i);
if (ct <= cuota) {
mes = i;
Escuela Superior de Ingenieros- Tecnun – Universidad de Navarra
Programación C++ - Solución Examen de Septiembre 03
}
break;
Pág.2
//termina, ya encontro
}
return mes;
}
double CalculaPagos(double *capp, double *capam, double *intepag,double cap, double
interes, int mess)
{
double cuota = CalculaCuota(cap,interes,mess);
double cappend = cap;
for (int i=0;i<mess;i++){
capp[i] = cappend;
intepag[i] = capp[i]*interes/(12*100);
capam[i] = cuota - intepag[i];
//actualizar capital pendiente
cappend = capp[i] - capam[i]; //cap.pendiente - cap.amortizado
}
cout << "\nCuota:"<<cuota << endl;
return cuota;
}
void ImprimePagos(double *capp, double *capam, double *intepag, int mess, double
cuota)
{
cout << "\n\t\t Tabla de Amortizacion"<<endl;
cout.width(5); cout << "Mes";
cout.width(12); cout << "Cap.Pend";
cout.width(12); cout << "Cap.Amort";
cout.width(12); cout << "Interes";
cout.width(12); cout << "Cuota/mes";
cout.setf(ios::fixed);
cout << endl;
for (int i=0;i<mess;i++){ cout.precision(2);
cout.width(5);
cout << i+1;
cout.width(12);
cout << capp[i];
cout.width(12);
cout << capam[i];
cout.width(12);
cout << intepag[i];
cout.width(12);
cout << cuota <<endl;
}
}
double CalculaCuota( double cap, double interes, int mess)
{
double cuota;
double im = interes/(12*100);
cuota = (cap*im)/(1-pow(1+im,-mess));
}
return cuota;
Escuela Superior de Ingenieros- Tecnun – Universidad de Navarra
Programación C++ - Solución Examen de Septiembre 03
Pág.3
Ejercicio 2
#include <iostream.h>
#include <string.h>
#include <stdlib.h>
class Perfil
{
bool CarnetConducir;
public:
void PideDatos(){
char ch;
cout <<"carnet de conducir (s/n):?"; cin >> ch;
if (ch=='s' || ch=='S') CarnetConducir=true;
else CarnetConducir=false;
}
virtual void showPerfil(){
cout << " Carnet Cond:"; (CarnetConducir==true)? cout <<"Si":cout<<"No";
cout << endl;
};
};
class PerfilTitulado : public Perfil
{
char Titulacion[30];
bool conocInfor;
public:
PerfilTitulado(){
char ch;
cout << "Titulacion:?" ; cin >> Titulacion;
cout << "Conoc.Informaticos (s/n):?"; cin >> ch;
if (ch=='s' || ch=='S') conocInfor=true;
else conocInfor=false;
PideDatos();
}
void showPerfil(){
cout << "\n\tPERFIL:";
cout << " Titulacion:" << Titulacion;
cout << " Con.Inform:" ; (conocInfor==true)? cout <<"Si":cout<<"No";
Perfil::showPerfil();
}
};
class PerfilEspecialista : public Perfil
{
char Especialidad[30];
public:
PerfilEspecialista(){
cout << "Especialidad:?" ; cin >> Especialidad;
PideDatos();
}
void showPerfil(){
cout << "\n\tPERFIL:";
cout << " Especialidad:" << Especialidad;
Perfil::showPerfil();
}
Escuela Superior de Ingenieros- Tecnun – Universidad de Navarra
Programación C++ - Solución Examen de Septiembre 03
};
class Empleo
{
Perfil *pf;
public:
void PideDatos(){
int per;
cout << "PERFIL?: 1:Titulado
cin >> per;
if (per==1) {
pf = new PerfilTitulado;
2:Especialista ?";
}else{
pf = new PerfilEspecialista;
}
}
//destructor??
virtual void infoEmpleo()
{
pf->showPerfil();
}
};
class OfertaEmpleo : public Empleo
{
char empresa[30];
char puesto[30];
double sueldo;
public:
OfertaEmpleo(char *emp=NULL, char *puest=NULL, double suel=0)
{
cout << "Oferta de Empleo:\n";
cout << "Empresa:?"; cin >> empresa;
cout << "Puesto:?"; cin >> puesto;
cout << "Sueldo:?"; cin >> sueldo;
Empleo::PideDatos();
}
void infoEmpleo()
{
cout << "\nOFERTA de EMPLEO:";
cout << " Empresa:" << empresa;
cout << " Puesto:" << puesto;
cout << " Sueldo:" << sueldo;
Empleo::infoEmpleo();
}
};
class DemandaEmpleo : public Empleo
{
char nombre[30];
public:
DemandaEmpleo(char *emp=NULL, char *puest=NULL, double suel=0)
{
cout << "Demanda de Empleo:\n";
cout << "Nombre:?"; cin >> nombre;
Escuela Superior de Ingenieros- Tecnun – Universidad de Navarra
Pág.4
Programación C++ - Solución Examen de Septiembre 03
Empleo::PideDatos();
}
void infoEmpleo()
{
cout << "\nDEMANDA de EMPLEO:";
cout << " Nombre:" << nombre;
Empleo::infoEmpleo();
}
};
void main()
{
int contOf=0, contDm=0, opc;
Empleo *of[30];
system("cls");
while(true)
{
cout << "++++ Menu ++++" << endl;
cout << "1. Agregar Oferta" << endl;
cout << "2. Agregar Demanda" << endl;
cout << "3. Listar todo" << endl;
cout << "4. Terminar" << endl;
cout << "\tOpcion:?"; cin >> opc;
switch (opc){
case 4: return;
case 1: of[contOf++] = new OfertaEmpleo(); break;
case 2: of[contOf++] = new DemandaEmpleo();break;
case 3:
for (int i=0;i<contOf;i++) of[i]->infoEmpleo();
break;
}
}
}
cout << "\nAdios..";
Escuela Superior de Ingenieros- Tecnun – Universidad de Navarra
Pág.5
Descargar