Ayuda en declaracion de struct
Hola a todos, primero para que me entiendan les mando el programa:
#include<iostream>
#include<stdlib.h>
#include<stdio.h>
using namespace std;
const int N=1000;
struct llamada{
struct fecha{int dia,mes,anio;}f;
char numTlf[14];
char tiempo;
};
struct LineaControl{
char numero[14];
char usuario[40];
int nllam;
llamada llam[100];
}usuarios[N];
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 IngresaDatos(LineaControl usuarios[],int &n)
{
fflush(stdin);
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;
//esta es la parte que quiero hacerla en otra funcion
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 esta funcion
}
int main()
{ int personas,i,n=1;
cout<<"Ingrese la cantidad de personas a procesar: "; cin>>personas;
for(i=1;i<=personas;i++)
{ IngresaDatos(usuarios,n);
}
ImprimeDatos(usuarios,n);
system("PAUSE");
return 0;
}
bueno el programa funciona bien, el problema es que un ejercicio que me piden, que haga una funcion que tenga como parametros el array de usuarios (usuarios[N]) la dimension (&n), numero telefonico(usuarios.llam.numTlf) y el mes(usuarios.llam.f.mes) segun esto mi funcion seria el siguiente:
void consumo(LineaControl usuarios[],int &n,LineaControl usuarios[].numero,LineaControl llam[].f.mes); y me da muchos errores, el problema seguro que es al declarar los datos que estan anidados, agradeceria a quien me pueda ayduar, gracias
Oliver
#include<iostream>
#include<stdlib.h>
#include<stdio.h>
using namespace std;
const int N=1000;
struct llamada{
struct fecha{int dia,mes,anio;}f;
char numTlf[14];
char tiempo;
};
struct LineaControl{
char numero[14];
char usuario[40];
int nllam;
llamada llam[100];
}usuarios[N];
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 IngresaDatos(LineaControl usuarios[],int &n)
{
fflush(stdin);
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;
//esta es la parte que quiero hacerla en otra funcion
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 esta funcion
}
int main()
{ int personas,i,n=1;
cout<<"Ingrese la cantidad de personas a procesar: "; cin>>personas;
for(i=1;i<=personas;i++)
{ IngresaDatos(usuarios,n);
}
ImprimeDatos(usuarios,n);
system("PAUSE");
return 0;
}
bueno el programa funciona bien, el problema es que un ejercicio que me piden, que haga una funcion que tenga como parametros el array de usuarios (usuarios[N]) la dimension (&n), numero telefonico(usuarios.llam.numTlf) y el mes(usuarios.llam.f.mes) segun esto mi funcion seria el siguiente:
void consumo(LineaControl usuarios[],int &n,LineaControl usuarios[].numero,LineaControl llam[].f.mes); y me da muchos errores, el problema seguro que es al declarar los datos que estan anidados, agradeceria a quien me pueda ayduar, gracias
Oliver