Está en la página 1de 30

Gua de Programacin Orientada A Objetos C++. Gustavo Uriel Martnez Hernndez.

Instituto Politcnico Nacional Escuela superior de Ingeniera Mecnica Elctrica Unidad Zacatenco

CARRERA: Ingeniera Elctrica. GRUPO: 2EM3. MATERIA: PROGRAMACIO ORIENTADA A OBJETOS.

EJERCICOS DE LA GUIA PRIMER PARCIAL.

Gustavo Uriel Martnez Hernndez

Gua de Programacin Orientada A Objetos C++. Gustavo Uriel Martnez Hernndez.


1. Crear 2 objetos en main (1 por cada constructor), inicialice los datos dentro del constructor e imprima los datos de cada pelcula. #include <iostream> #include <cstdlib> using namespace std; class pelicula { int duracion; string titulo,director; public: pelicula(int d,string dir,string ti) { this->duracion=d; this->director=dir; this->titulo=ti; } pelicula() { cout<<"nombre de la pelicula: ";getline(cin,titulo); cout<<"nombre del director: ";getline(cin,director); cout<<"duracion: ";cin>>duracion; } void imprimirPelicula() { cout<<"\npelicula\n"; cout<<"\ttitulo: "<<titulo; cout<<"\n\tduracion: "<<duracion; cout<<"\n\tdirector: "<<director; } }; int main() { int d; string dir,ti; pelicula x; x.imprimirPelicula();

Gua de Programacin Orientada A Objetos C++. Gustavo Uriel Martnez Hernndez.


cin.ignore(); cout<<"\n\nnombre de la pelicula: ";getline(cin,ti); cout<<"nombre del director: ";getline(cin,dir); cout<<"duracion: ";cin>>d; pelicula c(d,dir,ti); c.imprimirPelicula(); return 0; }

Gua de Programacin Orientada A Objetos C++. Gustavo Uriel Martnez Hernndez.


2. En cierto pas el impuesto que se debe pagar por los artculos se calcula mediante la siguiente regla: los primeros $20 no causan impuesto, los siguientes $20 tienen el 30% de impuesto y el resto 40% de impuesto, pero si el costo del producto es mayor a $500, entonces en lugar del 40 % se cobra el 50%. #include <iostream> using namespace std; class pago { float precio; public: pago() { cout<<"precio: ";cin>>precio; } float calcularimpuesto(); float calcularpreciototal(); }; float pago::calcularimpuesto() { float s; if(precio<=20) s=precio; else if(precio>20&&precio<=40) s=precio*0.30; else if(precio>40) s=precio*0.40; else if(precio>500) s=precio*0.50; return s; } float pago::calcularpreciototal() { float s;

Gua de Programacin Orientada A Objetos C++. Gustavo Uriel Martnez Hernndez.


s=pago::calcularimpuesto(); precio=precio+s; cout<<precio; } int main() { cout<<"ingresa el precio del producto\n"; pago d; d.calcularimpuesto(); cout<<"\n\ntotal a pagar: "; d.calcularpreciototal(); return 0; }

Gua de Programacin Orientada A Objetos C++. Gustavo Uriel Martnez Hernndez.


3. Escriba un programa que permita calcular lo que hay que pagarle a un trabajador teniendo en cuenta su sueldo y las horas extras trabajadas. Para el pago de horas extras se toma en cuenta la categora del trabajador.

#include <iostream> using namespace std; class salario { float sueldo; int categoria,horasextras; public: salario(float s,int c,int h) { this->sueldo=s; this->horasextras=h; this->categoria=c; } float calcularsueldo(); }; float salario::calcularsueldo() { if(categoria==1) sueldo=sueldo+(30*horasextras); else if(categoria==2) sueldo=sueldo+(38*horasextras); else if(categoria==3) sueldo=sueldo+(50*horasextras); else if(categoria==4) sueldo=sueldo+(70*horasextras); cout<<"\n\ntu sueldo neto es: "<<sueldo; } int main() { float s; int h,c;

Gua de Programacin Orientada A Objetos C++. Gustavo Uriel Martnez Hernndez.


cout<<"\t***SUELDOS***\n\n"; cout << "ingresa tu sueldo: ";cin>>s; cout<<"\ningresa tu categoria: ";cin>>c; cout<<"\ningresa tus horas extras: ";cin>>h; salario d(s,c,h); d.calcularsueldo(); return 0; }

Gua de Programacin Orientada A Objetos C++. Gustavo Uriel Martnez Hernndez.


4. Dada una hora imprimirla en formato de 24 horas y en formato de 12 horas (use a.m. y p.m. respectivamente). Crear un objeto por constructor. #include <iostream> using namespace std; class tiempo { int hora,minuto,segundo; public: tiempo() { } tiempo(int h,int m,int s) { hora=h; minuto=m; segundo=s; } void imprimirtiempo24h(); void imprimirtiempo12h(); }; void tiempo::imprimirtiempo12h() { if(hora>12) { hora=hora-12; cout<<hora<<":"<<minuto<<":"<<segundo<<" pm"; } else cout<<hora<<":"<<minuto<<":"<<segundo<<" am"; } void tiempo::imprimirtiempo24h() { cout<<hora<<":"<<minuto<<":"<<segundo<<" horas"; } int main() {

Gua de Programacin Orientada A Objetos C++. Gustavo Uriel Martnez Hernndez.


int h,m,s; cout<<"ingresa la hora en formato de 24 horas\n\n"; cout << "ingresa la hora: ";cin>>h; cout<<"ingresa los minutos: ";cin>>m; cout<<"ingresa los segundos: ";cin>>s; tiempo d(h,m,s); cout<<"\n\n"; d.imprimirtiempo24h(); cout<<"\n"; d.imprimirtiempo12h(); cout<<"\n"; return 0; }

Gua de Programacin Orientada A Objetos C++. Gustavo Uriel Martnez Hernndez.


5. Defina una clase Monedero que permita gestionar la cantidad de dinero de que una persona dispone en un momento dado. La clase deber tener un constructor que permitir crear un monedero con una cantidad de dinero inicial y deber definir un mtodo para meter dinero en el monedero, otro para sacarlo y finalmente, otro para consultar el dinero disponible; solo podr conocerse la cantidad de dinero del monedero a travs de este ltimo mtodo. Por supuesto, no se podr sacar ms dinero del que haya en un momento dado en el monedero. #include <iostream> using namespace std; class monedero { float dinero; public: monedero(float d) { dinero=d; } ~monedero() { cout<<"\nte han robado!!\n"; } void meterdinero(); void sacardinero(); float consultardinero(); }; void monedero::meterdinero() { float s; cout<<"\cual es el monto que deseas ingresar? ";cin>>s; dinero=dinero+s; } void monedero::sacardinero() { float s; cout<<"\ncual es el monto que deseas retirar? ";cin>>s; if(s<=dinero) dinero=dinero-s;

Gua de Programacin Orientada A Objetos C++. Gustavo Uriel Martnez Hernndez.


else cout<<"\nno dispone de suficiente saldo para hacer ese retiro"; } float monedero::consultardinero() { cout<<"\nmonto total: "<<dinero; } int main() { float d; int q; cout <<"cantidad inicial: ";cin>>d; monedero f(d); cout<<"que accion deseas realizar?\n"; cout<<"1.meter dinero\n2.sacar dinero\n3.consultar saldo\n\nelige una opcion ";cin>>q; switch(q) { case 1:{f.meterdinero(); f.consultardinero(); break;} case 2:{f.sacardinero(); f.consultardinero(); break;} case 3:{f.consultardinero(); break;} }

return 0; }

m.

Gua de Programacin Orientada A Objetos C++. Gustavo Uriel Martnez Hernndez.

Gua de Programacin Orientada A Objetos C++. Gustavo Uriel Martnez Hernndez.


6. Dados los tres lados de un tringulo (L1, L2 y L3), determinar el permetro y el rea; esta ltima la calculamos aplicando la frmula de Hern: #include <iostream> #include <cmath> using namespace std; class triangulo { float l[3]; public: triangulo() { cout<<"lado 1: ";cin>>l[0]; cout<<"lado 2: ";cin>>l[1]; cout<<"lado 3: ";cin>>l[2]; } float calcularperimetro(); float calculararea(); void calcularangulos(); void determinartriangulo(); }; float triangulo::calcularperimetro() { cout<<"\nperimetro= "<<l[0]+l[1]+l[2]<<"u"; } float triangulo::calculararea() { float s,area; s=(l[1]+l[2]+l[0])/3; area=sqrt(s*(s-l[0])*(s-l[1])*(s-l[2])); cout<<"\narea= "<<area<<" u^2\n"; } void triangulo::calcularangulos() { float a,b,c; a=acos(pow((l[0]),2)-pow((l[1]),2)-pow((l[2]),2))/((-2)*(l[1])*(l[2]));

Gua de Programacin Orientada A Objetos C++. Gustavo Uriel Martnez Hernndez.


b=asin(l[1]*sin(a)/l[3]); c=asin(l[2]*sin(a)/l[3]); cout<<"angulo 1 "<<a<<" grados\n"; cout<<"angulo 2 "<<b<<" grados\n"; cout<<"angulo 3 "<<c<<" grados\n"; } void triangulo::determinartriangulo() { if(l[0]==l[1]&&l[1]==l[2]) cout<<"triangulo equilatero\n"; else if(l[0]==l[1]||l[0]==l[2]||l[2]==l[1]||l[2]==l[1]) cout<<"triangulo isoceles\n"; else if(l[0]!=l[2]&&l[1]!=l[2]&&l[0]!=l[2]) cout<<"triangulo escaleno\n"; } int main() { cout <<"ingresa las medidas de los lados del triangulo\n\n"; triangulo d; d.calcularperimetro(); d.calculararea(); d.calcularangulos(); d.determinartriangulo(); return 0; }

Gua de Programacin Orientada A Objetos C++. Gustavo Uriel Martnez Hernndez.

Gua de Programacin Orientada A Objetos C++. Gustavo Uriel Martnez Hernndez.


7. Lo mismo que el anterior, pero ahora use memoria dinmica. #include <iostream> #include <cmath> using namespace std; class triangulo { float *l; public: triangulo() { l=new float[3]; cout<<"lado 1: ";cin>>l[0]; cout<<"lado 2: ";cin>>l[1]; cout<<"lado 3: ";cin>>l[2]; } triangulo(const triangulo &); ~triangulo() { delete []l; } float calcularperimetro(); float calculararea(); void calcularangulos(); void determinartriangulo(); }; float triangulo::calcularperimetro() { cout<<"\nperimetro= "<<l[0]+l[1]+l[2]<<"u"; } float triangulo::calculararea() { float s,area; s=(l[1]+l[2]+l[0])/3; area=pow((s*(s-l[0])*(s-l[1])*(s-l[2])),0.5);

Gua de Programacin Orientada A Objetos C++. Gustavo Uriel Martnez Hernndez.


cout<<"\narea= "<<area<<" u^2\n"; }

void triangulo::calcularangulos() { float a,b,c; a=acos(pow(l[0],2)-pow(l[1],2)-pow(l[2],2)/(-2*l[1]*l[2]))*(180/3.141592); b=asin(l[1]*sin(a)/l[3])*(180/3.141592); c=asin(l[2]*sin(a)/l[3])*(180/3.141592); cout<<"angulo 1 "<<a<<" grados\n"; cout<<"angulo 2 "<<b<<" grados\n"; cout<<"angulo 3 "<<c<<" grados\n"; } void triangulo::determinartriangulo() { if(l[0]==l[1]&&l[1]==l[2]) cout<<"triangulo equilatero\n"; else if(l[0]==l[1]||l[0]==l[2]||l[2]==l[1]||l[2]==l[1]) cout<<"triangulo isoceles\n"; else if(l[0]!=l[2]&&l[1]!=l[2]&&l[0]!=l[2]) cout<<"triangulo escaleno\n"; } triangulo::triangulo(const triangulo &x) { for(int i=0;i<3;i++) l[i]=x.l[i]; } int main() { cout <<"ingresa las medidas de los lados del triangulo\n\n"; triangulo d; d.calcularperimetro(); d.calculararea(); d.calcularangulos(); d.determinartriangulo(); return 0; }

Gua de Programacin Orientada A Objetos C++. Gustavo Uriel Martnez Hernndez.

Gua de Programacin Orientada A Objetos C++. Gustavo Uriel Martnez Hernndez.


8. Calcule el rea y permetro de 2 rectngulos (2 objetos, y por constructor), imprimir sus lados, su rea y su permetro. La funcin ImprimirRectangulo debe identificar qu lado corresponde a la base y cul a la altura: #include <iostream> using namespace std; class rectangulo { float l1,l2; public: rectangulo(float l1,float l2) { this->l1=l1; this->l2=l2; } void imprimirrectangulo(); float calculararea(); float calcularperimetro(); }; void rectangulo::imprimirrectangulo() { if(l1>l2) { cout<<"\nbase= "<<l1; cout<<"\naltura= "<<l2; } else if(l1<l2) { cout<<"\nbase= "<<l2; cout<<"\naltura= "<<l1; } } float rectangulo::calculararea() { cout<<"\narea= "<<l1*l2; } float rectangulo::calcularperimetro()

Gua de Programacin Orientada A Objetos C++. Gustavo Uriel Martnez Hernndez.


{ cout<<"\nperimetro= "<<(2*l1)+(2*l2); }

int main() { float l1,l2; cout<<"RECTANGULO 1\n"; cout <<"lado 1: ";cin>>l1; cout<<"lado 2: ";cin>>l2; rectangulo a(l1,l2); cout<<"\nRECTANGULO 2\n"; cout <<"lado 1: ";cin>>l1; cout<<"lado 2: ";cin>>l2; rectangulo s(l1,l2); cout<<"\nrectangulo 1:"; a.imprimirrectangulo(); a.calcularperimetro(); a.calculararea(); cout<<"\n\nrectangulo 2:"; s.imprimirrectangulo(); s.calcularperimetro(); s.calculararea(); return 0; }

Gua de Programacin Orientada A Objetos C++. Gustavo Uriel Martnez Hernndez.

Gua de Programacin Orientada A Objetos C++. Gustavo Uriel Martnez Hernndez.


9. Lo mismo que el anterior, slo que en este caso use memoria dinmica para crear un arreglo de tamao 2, el cual almacenar los 2 lados del rectngulo. En este caso, crear un objeto adicional que sea copia del segundo rectngulo, cuando se haga la copia, el nuevo objeto debe ser el doble del original. #include <iostream> using namespace std; class rectangulo { float *l; public: rectangulo(float l1,float l2) { l=new float [2]; l[0]=l1; l[1]=l2; } void imprimirrectangulo(); float calculararea(); float calcularperimetro(); rectangulo(const rectangulo &); ~rectangulo() { delete []l; } }; void rectangulo::imprimirrectangulo() { if(l[0]>l[1]) { cout<<"\nbase= "<<l[0]; cout<<"\naltura= "<<l[1]; } else if(l[0]<l[1]) { cout<<"\nbase= "<<l[0]; cout<<"\naltura= "<<l[1];

Gua de Programacin Orientada A Objetos C++. Gustavo Uriel Martnez Hernndez.


} } float rectangulo::calculararea() { cout<<"\narea= "<<l[0]*l[1]; } float rectangulo::calcularperimetro() { cout<<"\nperimetro= "<<(2*l[0])+(2*l[1]); } rectangulo::rectangulo(const rectangulo &x) { l=new float [2]; l[0]=x.l[0]*2; l[1]=x.l[1]*2; } int main() { float l1,l2; cout<<"RECTANGULO 1\n"; cout <<"lado 1: ";cin>>l1; cout<<"lado 2: ";cin>>l2; rectangulo a(l1,l2); /*cout<<"\nRECTANGULO 2\n"; cout <<"lado 1: ";cin>>l1; cout<<"lado 2: ";cin>>l2;*/ rectangulo s(a); cout<<"\nrectangulo 1:"; a.imprimirrectangulo(); a.calcularperimetro(); a.calculararea(); cout<<"\n\nrectangulo 2:"; s.imprimirrectangulo(); s.calcularperimetro(); s.calculararea(); return 0;

Gua de Programacin Orientada A Objetos C++. Gustavo Uriel Martnez Hernndez.


}

Gua de Programacin Orientada A Objetos C++. Gustavo Uriel Martnez Hernndez.


10. Cree una clase llamada Complejo para realizar aritmtica con nmeros complejos. #include <iostream> #include <cmath> using namespace std; class complejo { float imag,real; public: complejo(float i=0,float r=0) { this->imag=i; this->real=r; } void imprimir() { cout<<real<<"+";cout<<imag<<"i"; } friend complejo sumar(const complejo &,const complejo &); friend complejo restar(const complejo &,const complejo &); friend complejo multiplicar(const complejo &,const complejo &); friend complejo dividir(const complejo &,const complejo &); }; complejo sumar(const complejo &n,const complejo &b) { complejo x; x.real=n.real+b.real; x.imag=n.imag+b.imag; return x; } complejo restar(const complejo &n,const complejo &b) { complejo x; x.real=n.real-b.real; x.imag=n.imag-b.imag; return x; } complejo multiplicar(const complejo &n,const complejo &b)

Gua de Programacin Orientada A Objetos C++. Gustavo Uriel Martnez Hernndez.


{ complejo x; x.imag=(n.imag*b.real)+(b.imag*n.real); x.real=(n.real*b.real)+(n.imag*b.imag*-1); return x; } complejo dividir(const complejo &n,const complejo &b) { complejo x; x.real=((n.real*b.real)+(n.imag*b.imag))/(pow(b.real,2)+pow(b.imag,2)); x.imag=((n.imag*b.real)-(n.real*b.imag))/(pow(n.real,2)+pow(b.imag,2)); return x; } int main() { float i,r; complejo x,y,z,w,k; cout<<"\tNUMEROS COMPLEJOS\n\n"; cout<<"ingresa la parte real ";cin>>r; cout<<"ingresa la parte imaginaria ";cin>>i; complejo n(i,r); cout<<"ingresa la parte real2 ";cin>>r; cout<<"ingresa la parte imaginaria2 ";cin>>i; cout<<"\ncoordenadas cartecianas\n"; complejo b(i,r); n.imprimir(); cout<<"\n"; b.imprimir(); x=sumar(n,b); y=restar(n,b); z=multiplicar(n,b); k=dividir(n,b); cout<<"\n\nel resultado de la suma es: "; x.imprimir(); cout<<"\nel resultado de la resta es: "; y.imprimir(); cout<<"\nel resultado de la multiplicacion es: "; z.imprimir(); cout<<"\nel resultado de la division es: "; k.imprimir(); cout<<"\n\n"; return 0; }

Gua de Programacin Orientada A Objetos C++. Gustavo Uriel Martnez Hernndez.

Gua de Programacin Orientada A Objetos C++. Gustavo Uriel Martnez Hernndez.


11. Ingresar los nmeros complejo en forma cartesiana, convertirlos a su forma polar y realizar las operaciones indicadas en forma polar. #include <iostream> #include <cmath> using namespace std; class complejo { float real,imag,modulo,argumento; public: complejo(float r=0,float i=0) { real=r; imag=i; } void imprimircomplejo(); void convertircomplejo(); friend complejo sumar(const complejo &,const complejo &); friend complejo restar(const complejo &,const complejo &); friend complejo multiplicar(const complejo &,const complejo &); friend complejo dividir(const complejo &,const complejo &); }; void complejo::convertircomplejo() { modulo=sqrt((pow(real,2))+(pow(imag,2))); argumento=atan(imag/real)/3.141592*180; } void complejo::imprimircomplejo() { cout<<"\nz= "<<modulo<<"\nang= "<<argumento; } complejo sumar(const complejo &n,const complejo &b) { complejo x; x.real=n.real+b.real; x.imag=n.imag+b.imag; return x;

Gua de Programacin Orientada A Objetos C++. Gustavo Uriel Martnez Hernndez.


} complejo restar(const complejo &n,const complejo &b) { complejo x; x.real=n.real-b.real; x.imag=n.imag-b.imag; return x; } complejo multiplicar(const complejo &n,const complejo &b) { complejo x; x.imag=(n.imag*b.real)+(b.imag*n.real); x.real=(n.real*b.real)+(n.imag*b.imag*-1); return x; } complejo dividir(const complejo &n,const complejo &b) { complejo x; x.real=((n.real*b.real)+(n.imag*b.imag))/(pow(b.real,2)+pow(b.imag,2)); x.imag=((n.imag*b.real)-(n.real*b.imag))/(pow(n.real,2)+pow(b.imag,2)); return x; } int main() { float i,r; complejo x,y,z,w,k; cout<<"\tNUMEROS COMPLEJOS\n\n"; cout<<"ingresa la parte real ";cin>>r; cout<<"ingresa la parte imaginaria ";cin>>i; complejo n(i,r); cout<<"\ningresa la parte real2 ";cin>>r; cout<<"ingresa la parte imaginaria2 ";cin>>i; cout<<"\ncoordenadas polares\n"; complejo b(i,r); n.convertircomplejo(); n.imprimircomplejo(); cout<<"\n"; b.convertircomplejo(); b.imprimircomplejo();

Gua de Programacin Orientada A Objetos C++. Gustavo Uriel Martnez Hernndez.


x=sumar(n,b); y=restar(n,b); z=multiplicar(n,b); k=dividir(n,b); cout<<"\n\nel resultado de la suma es: "; x.convertircomplejo(); x.imprimircomplejo(); cout<<"\n\nel resultado de la resta es: "; y.convertircomplejo(); y.imprimircomplejo(); cout<<"\n\nel resultado de la multiplicacion es: "; z.convertircomplejo(); z.imprimircomplejo(); cout<<"\n\nel resultado de la division es: "; k.convertircomplejo(); k.imprimircomplejo(); cout<<"\n\n";

return 0; }

También podría gustarte