Como implementar clases amigas en este codigo

Iniciado por planta12, 5 Octubre 2015, 02:56 AM

0 Miembros y 1 Visitante están viendo este tema.

planta12

Hola a todos, gracias por su ayuda y tiempo
como puedo implementar clases amigas y el puntero this en este código, es una agenda también tengo mucho código innecesario y que no utilizo.

Código (cpp) [Seleccionar]

#include<iostream>
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
#include<iomanip>

using namespace std;

char nombre[500000][500];
int Edad[30];
int Mat[230];
int Tel[30];
int bucle;

//Agenda 2
char nombreA1[500000][500];
int EdadA1[30];
int MatA1[230];
int TelA1[30];
int bucleA1,hj;
class Agenda
{
public:
Agenda()
{
cout<<"\n\t->Constructor"<<endl;
}
~Agenda()
{
cout<<"\n\t->Destructor"<<endl;
}
Agenda &establecehora( int );
void Nombre(char a);
int Matricula(int);
int Edad(int);
int Tel(int);
friend class Agenda1;
void convMayusc(char *s);
void Inicial();
private:
friend void convMayusc(char *s);
int hora;

};

class Agenda1
{
public:
Agenda1()
{

}
void convMayusc(char *s);
void estableceX(Agenda &, int);
}User[10];
void Agenda1::convMayusc(char *s)
{
while(*s != '\0')
{
if(*s >= 'a' && *s <= 'z'){
*s-=32;
}
++s;
}
}
int Agenda::Matricula(int x)
{
cout<<"#"<<Mat<<endl;
}
void Agenda::convMayusc(char *s)
{
while(*s != '\0')
{
if(*s >= 'a' && *s <= 'z'){
*s-=32;
}
++s;
}


}
Agenda &Agenda::establecehora( int h )
{
hj=24;
    hora = ( h >= 0 && h < 50 ) ? h : 0;
    return *this;
}
Agenda h;
void Inicial()
{
for(int i=0;i<bucle;i++)
{
cout<<"\n\tUsuario["<<i+1<<"]"<<endl;
cout<<"\n\t["<<i+1<<"]-Nombre completo ";
gets(nombre[i]);
gets(nombre[i]);
h.convMayusc(nombre[i]);
cout<<"\n\t["<<i+1<<"]-Edad ";
cin>>Edad[i];
cout<<"\n\t["<<i+1<<"]-Matricula ";
cin>>Mat[i];
cout<<"\n\t["<<i+1<<"]-Telefono ";
cin>>Tel[i];
}
}

void Mostrar()
{
char c=219;
for( int i=0;i<bucle;i++)
{
cout<<"Nombre:     "<<nombre[i]<<endl;
cout<<"Edad:       "<<Edad[i]<<endl;
cout<<"Matricula: #"<<Mat[i]<<endl;
cout<<"Telefono:   "<<Tel[i]<<endl<<endl;

for(int j=0;j<40;j++)
{
cout<<c<<" ";
}
}
}
void newArray()
{
Agenda1 Object;
for(int j=0;j<bucleA1;j++)
{
cout<<"\n\tUsuario["<<j+1<<"]"<<endl;
cout<<"\n\t["<<j+1<<"]-Nombre completo ";
gets(nombreA1[j]);
gets(nombreA1[j]);
Object.convMayusc(nombreA1[j]);
cout<<"\n\t["<<j+1<<"]-Edad ";
cin>>EdadA1[j];
cout<<"\n\t["<<j+1<<"]-Matricula ";
cin>>MatA1[j];
cout<<"\n\t["<<j+1<<"]-Telefono ";
cin>>TelA1[j];
}
}
void newArrayPrint()
{
char c=219;
for(int j=0;j<bucle;j++)
{
cout<<"Nombre:     "<<nombreA1[j]<<endl;
cout<<"Edad:       "<<EdadA1[j]<<endl;
cout<<"Matricula: #"<<MatA1[j]<<endl;
cout<<"Telefono:   "<<TelA1[j]<<endl<<endl;
for(int j=0;j<40;j++)
{
cout<<c<<" ";
}
}
}

void Search()
{
int mat1,cont;
cout<<"\n\tIngresa Nombre o Matricula o numero de tel. a buscar ";
cin>>mat1;
for(int i=0;i<bucle;i++)
{
if( mat1==Mat[i] || mat1==Tel[i] || mat1==nombre [i][500] )
{
cout<<"Nombre:     "<<nombre[i]<<endl;
cout<<"Edad:       "<<Edad[i]<<endl;
cout<<"Matricula: #"<<Mat[i]<<endl;
cout<<"Telefono:   "<<Tel[i]<<endl<<endl;
cont++;
}
if( mat1==MatA1[i] || mat1==TelA1[i] || mat1==nombreA1 [i][500] )
{
cout<<"Nombre:     "<<nombreA1[i]<<endl;
cout<<"Edad:       "<<EdadA1[i]<<endl;
cout<<"Matricula: #"<<MatA1[i]<<endl;
cout<<"Telefono:   "<<TelA1[i]<<endl<<endl;
cont++;
}
else if(cont<1)
{
cout<<"\n\tNo se encontaron resultados en la base de datos";
cont=0;
}
}
}

void borrar()
{
for(int i=0;i<bucle+bucleA1;i++)
{
int *pointer;
pointer = new int(Edad[i]);
cout<< pointer<<endl;;
delete pointer;
}
}


int main()
{
Agenda Hora;
int op,cont=1,op2;
do{
Hora.establecehora(hj);
   cout<< setw(70)<<" Semptiembre "<<hj<<" 2015" <<endl;
cout<<"\n\t1-Nueva entrada 2-Ver entradas 3-Salir ";
cin>>op;
cout<<endl;
switch(op)
{
case 1:
cout<<"\n\tCuantas entradas quieres ingresar ";
cin>>bucle;
Inicial();
break;
case 2:
Mostrar();
if(cont==2)
{
newArrayPrint();
}
do{
cout<<"\n\t1-Buscar contacto 2-Nueva entrada 3-Continuar ";
cin>>op2;
switch(op2)
{
case 1:
Search();
break;
case 2:
cont=1;
cont++;
cout<<"\n\tCuantas entradas quieres ingresar ";
cin>>bucleA1;
newArray();
//newArrayPrint();
break;
}
/*getch();
system("cls");*/
}while(op2!=3);
break;
case 3:
borrar();
Mostrar();
cout<<"\n\tSaliendo"<<endl;

break;
}
getch();
system("cls");
}while(op!=3);
return 0;
}