Está en la página 1de 4

SOBRECARGA DE OPERADORES

1. Sobrecargar 2 constructores de Libro con ningun parmetro y todos los parmetros. Ademas sobrecargar el operador ++ para incrementar k paginas al Libro, el operador > para determinar dados 2 objetos Libros cual de ellos tiene mayor cantidad de paginas, == para determinar si dos Libros son iguales y para mostrar los Libro.

#include <iostream.h> #include <stdio.h> #include <conio.h> #include <string.h> class Libro { private: char *autor; char *titulo; int nropag; int nroedic; public: Libro() { strcpy(autor,"Armando R."); strcpy(titulo,"ALGEBRA"); nropag=350; nroedic=3; } Libro(char *a,char *t,int np,int ne) { strcpy(autor,a); strcpy(titulo,t); nropag=np; nroedic=ne; } void Mostrar() { cout<<"Autor ...........:"<<autor<<"\n"; cout<<"Titulo ..........:"<<titulo<<"\n"; cout<<"Nro Paginas .....:"<<nropag<<"\n"; cout<<"Nro de Edicion ..:"<<nroedic<<"\n"; } void operator !() { cout<<"Autor ...........:"<<autor<<"\n"; cout<<"Titulo ..........:"<<titulo<<"\n"; cout<<"Nro Paginas .....:"<<nropag<<"\n"; cout<<"Nro de Edicion ..:"<<nroedic<<"\n"; } void operator ++() { int n; cout<<"Ingrese el Nro de paginas a incrementar ..:"; cin>>n; nropag+=n; cout<<"El nuevo Nro de paginas es ..:"<<nropag; } int obtNroPag() { return nropag; }

int obtNroEdicion() { return nroedic; } char *obtAutor() { return autor; } char *obtTitulo() { return titulo; } int operator >(Libro B) { if(nropag>B.obtNroPag()) return 1; else return 0; } void operator ==(Libro B) { if(nropag==B.obtNroPag() && nroedic==B.obtNroEdicion() && !strcmp(autor,B.obtAutor()) && !strcmp(titulo,B.obtTitulo())) cout<<"\nSon Iguales"; else cout<<"\nSon Diferentes"; } }; void main() { Libro A; Libro B("Juan Raist","Biologia",300,2); !A; !B; ++B; if(A>B) cout<<"\nA tiene mayor No de Paginas"; else cout<<"\nB tiene mayor No de Paginas"; A==B; getch(); } 2. Dada la clase polimonio sobrecargar 2 constructores, ademas sobrecargar los metodos: mostrar() para mostrar todo el Polinomio. mostrar(i) para mostrar hasta el i-esimo termino. mostrar(i,j) para mostrar desde la i-esimo termino hasta el j-esimo termino. Sobrecargar los Operadores: ++ para incrementar en 1 a los coeficientes de cada termino. + para hacer la Unin de 2 Polinomios. && para la simplificacin del Polinomio. #include <iostream.h> #include <stdio.h> #include <conio.h> class Polinomio

{ int coe[20]; int exp[20]; int nter; public: Polinomio(int n) { int i; nter=n; clrscr(); cout<<">> DATOS DEL POLINOMIO <<\n"; for(i=1;i<=nter;i++) { cout<<"Coeficiente ..:"; cin>>coe[i]; cout<<"Exponente ....:"; cin>>exp[i]; } } Polinomio() { nter=0; } void mostrar() { int i; for(i=1;i<=nter;i++) cout<<coe[i]<<"x^"<<exp[i]<<" +"; cout<<"\n"; } void mostrar(int i) { int ii; for(ii=1;ii<=i;ii++) cout<<coe[ii]<<"x^"<<exp[ii]<<" +"; } void mostrar(int i,int j) { int ii; if(j > nter) j=nter; for(ii=i;ii<=j;ii++) cout<<coe[ii]<<"x^"<<exp[ii]<<" +"; } void operator ++() { int i; for(i=1;i<=nter;i++) coe[i]=coe[i]+1; } void operator +(Polinomio q) {

int i,j=0; for(i=nter+1;i<=nter+q.nter;i++) { j++; coe[i]=q.coe[j]; exp[i]=q.exp[j]; } nter=nter+q.nter; } Polinomio operator &&(Polinomio q) { Polinomio paux; int mc=0,sw=0,naux=0,sum=0; int i,j; for(i=1;i<=nter;i++) if(exp[i] > mc) mc=exp[i]; for(i=1;i<=mc;i++) { sw=0; sum=0; for(j=1;j<=nter;j++) if(i == exp[j]) { sum=sum+coe[j]; sw=1; } if(sw) { naux++; paux.coe[naux]=sum; paux.exp[naux]=i; } } paux.nter=naux; return (paux); } }; void main() { Polinomio p(3); p.mostrar(); p++; p.mostrar(); p+p; p.mostrar(); p=p&&p; p.mostrar(); getch(); }

También podría gustarte