#include<iostream>
#include<stdlib.h>
#include<stdio.h>
using namespace std;
const int N=1000;
typedef {int dia,mes,anio;}fecha;
typedef{
fecha f;
char numTlf[14]; // numero al cual se llama
float tiempo; // linea control
}llamada;
typedef{
char numero[14];
char usuario[40];
int nllam; //numero de llamadas
llamada llam[100]; //array de llamadas
}LineaControl;
void IngresaDatos(LineaControl usuarios[],int &n); //ojo que tenemos que hacer como puntero para que la variable n pueda avanzar
void ImprimeDatos(LineaControl usuarios[],int &n); //notese que cuando solo se declara int n te pedira siempre Ingrese el numero de telefono del 1 cliente
//siempre sera 1 cliente, 1 cliente
void consumo(LineaControl usuarios[],int &n,llamada llam.numTlf[],fecha f.mes);
void IngresaDatos(LineaControl usuarios[],int &n)
{
cout
<<"tttIngrese el numero de telefono del "<<n
<<" cliente: "; gets(usuarios
[n
].
numero);fflush(stdin
);cout
<<endl
<<endl
; cout
<<"Ingrese el nombre del cliente: "; gets(usuarios
[n
].
usuario);fflush(stdin
); cout
<<"Ingrese cantidad de llamadas que realizo el cliente: "; cin
>>usuarios
[n
].
nllam;fflush(stdin
); cout<<endl;
cout<<"Ingreso de datos de llamadas que realizo el cliente "<<usuarios[n].usuario<<endl;
for(int i=1;i<=usuarios[n].nllam;i++)
{ cout
<<"Ingrese el "<<i
<<" numero: "; gets(usuarios
[n
].
llam[i
].
numTlf); fflush(stdin
); cout
<<"Ingrese la duracion de la llamada: "; cin
>>usuarios
[n
].
llam[i
].
tiempo; fflush(stdin
); cout
<<endl
<<"Ingrese la fecha que se realizo la llamada dd/mm/aaaa: "; cin
>>usuarios
[n
].
llam[i
].
f.
dia>>usuarios
[n
].
llam[i
].
f.
mes>>usuarios
[n
].
llam[i
].
f.
anio;fflush(stdin
); cout<<endl;
}
n++;
}
void ImprimeDatos(LineaControl usuarios[],int &n)
{
cout<<"Los datos ingresados fueron: "<<endl<<endl;
for(int i=1;i<n;i++)
{
cout<<"..................................................."<<endl;
cout<<"numero del cliente: "<<usuarios[i].numero; cout<<endl<<endl;
cout<<"nombre del cliente: "<<usuarios[i].usuario;cout<<endl;
cout<<"datos de llamadas que realizo el cliente "<<usuarios[i].usuario<<endl;
for(int j=1;j<=usuarios[i].nllam;j++)
{ cout<<usuarios[i].llam[j].numTlf<<endl;
cout<<"duracion de la llamada: "<<usuarios[i].llam[j].tiempo<<endl;
cout<<"fecha que se realizo la llamada dd/mm/aaaa: "<<usuarios[i].llam[j].f.dia<<" "<<usuarios[i].llam[j].f.mes<<" "<<usuarios[i].llam[j].f.anio;
cout<<endl<<endl;
}
cout<<"..................................................."<<endl;
}
cout<<endl<<endl;
/* ACA ES DONDE EXPLICO QUE SI ME FUNCIONA SIN CREAR LA FUNCION QYE ME PIDEN
int posic;
for(int i=1;i<n;i++)
{ float mayor=0;
for(int j=1;j<=usuarios[i].nllam;j++)
{ if(usuarios[i].llam[j].tiempo>mayor)
{mayor=usuarios[i].llam[j].tiempo;}
}
for(int j=1;j<=usuarios[i].nllam;j++)
{ if(mayor==usuarios[i].llam[j].tiempo)
{posic=j;}
}
cout<<"La llamada mas larga que realizo "<<usuarios[i].usuario<<" fue al numero: "<<usuarios[i].llam[posic].numTlf<<" y duro: "<<usuarios[i].llam[posic].tiempo<<" en el mes de "<<usuarios[i].llam[posic].f.mes<<endl;
}
ACA TERMINA*/
}
void consumo(LineaControl usuarios[],int &n,llamada llam.numTlf[],fecha f.mes)
{ int posic;
for(int i=1;i<n;i++)
{ float mayor=0;
for(int j=1;j<=usuarios[i].nllam;j++) //busco el de mayor tiempo de llamada
{ if(usuarios[i].llam[j].tiempo>mayor)
{mayor=usuarios[i].llam[j].tiempo;}
}
for(int j=1;j<=usuarios[i].nllam;j++) //busco a quien le pertenece ese mayor tiempo de llamada
{ if(mayor==usuarios[i].llam[j].tiempo)
{posic=j;}
}
cout<<"La llamada mas larga que realizo "<<usuarios[i].usuario<<" fue al numero: "<<
cout<<usuarios[i].llam[posic].numTlf<<" y duro: "<<usuarios[i].llam[posic].tiempo<<" en el mes de "<<
cout<<usuarios[i].llam[posic].f.mes<<endl;
}
}
int main()
{ int personas,i,n=1;
fecha f;
llamada llam[];
cout<<"Ingrese la cantidad de personas a procesar: "; cin>>personas;
for(i=1;i<=personas;i++)
{ IngresaDatos(usuarios,n);
}
ImprimeDatos(usuarios,n);
consumo(usuarios,n,llam.numTlf,f.mes);
return 0;
}