• Domingo 15 de Diciembre de 2024, 08:42

Autor Tema:  Ayuuudaa en este error  (Leído 904 veces)

o.ficu

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Ayuuudaa en este error
« en: Jueves 12 de Noviembre de 2009, 04:38 »
0
Hola a todos, espero alguien pueda ayudarme, en el siguiente programa que les dejo, me presenta el siguiente error: "request for member 'numTlf' in 'llam', which is of non-class type 'llamada[100]' " este error me marca en la llamada consumo(usuarios,n,llam.numTlf,f.mes); Gracias de antemano por su ayuda.
El código del header es:
Código: C
  1. #ifndef LLAMADA_H
  2. #define LLAMADA_H
  3.  struct fecha{int dia,mes,anio;};
  4.  
  5.  
  6. struct llamada{
  7.        fecha f;
  8.        char numTlf[14];        // numero al cual se llama
  9.        float tiempo;             // linea control
  10.        }llam[100];
  11.  
  12. #endif
  13.  
Y el programa:
Código: C
  1. #include<iostream>
  2. #include<stdlib.h>
  3. #include<stdio.h>
  4. #include<string.h>
  5. #include "header.h"
  6. using namespace std;
  7.  
  8. const int N=1000;
  9.  
  10. struct LineaControl{
  11.        char numero[14];
  12.        char usuario[40];
  13.        int nllam;              //numero de llamadas
  14.        llamada llam[100];       //array de llamadas
  15.        }usuarios[N];
  16.        
  17.  
  18. void IngresaDatos(LineaControl usuarios[],int &n);      
  19. void ImprimeDatos(LineaControl usuarios[],int &n);  
  20. void BuscaPersona(LineaControl usuarios[],int &n);                                                      
  21. void consumo(LineaControl usuarios[],int &n,char numTlf,int mes);
  22.  
  23. void IngresaDatos(LineaControl usuarios[],int &n)
  24. {    
  25.       fflush(stdin);
  26.       cout<<"tttIngrese el numero de telefono del "<<n<<" cliente: ";    gets(usuarios[n].numero);fflush(stdin);cout<<endl<<endl;
  27.       cout<<"Ingrese el nombre del cliente: ";                gets(usuarios[n].usuario);fflush(stdin);
  28.       cout<<"Ingrese cantidad de llamadas que realizo el cliente: ";    cin>>usuarios[n].nllam;fflush(stdin);
  29.       cout<<endl;
  30.      
  31.       cout<<"Ingreso de datos de llamadas que realizo el cliente "<<usuarios[n].usuario<<endl;
  32.       for(int i=1;i<=usuarios[n].nllam;i++)
  33.       {   cout<<"Ingrese el "<<i<<" numero: ";       gets(usuarios[n].llam[i].numTlf); fflush(stdin);
  34.           cout<<"Ingrese la duracion de la llamada: ";    cin>>usuarios[n].llam[i].tiempo; fflush(stdin);
  35.           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);
  36.           cout<<endl;
  37.       }
  38.  
  39.       n++;
  40. }  
  41.  
  42.  
  43. void ImprimeDatos(LineaControl usuarios[],int &n)
  44. {    
  45.       cout<<"Los datos ingresados fueron: "<<endl<<endl;
  46.       for(int i=1;i<n;i++)
  47.      
  48.       {
  49.       cout<<"..................................................."<<endl;
  50.       cout<<"numero del cliente: "<<usuarios[i].numero;               cout<<endl<<endl;
  51.       cout<<"nombre del cliente: "<<usuarios[i].usuario;cout<<endl;
  52.       cout<<"datos de llamadas que realizo el cliente "<<usuarios[i].usuario<<endl;
  53.         for(int j=1;j<=usuarios[i].nllam;j++)
  54.         {   cout<<usuarios[i].llam[j].numTlf<<endl;
  55.             cout<<"duracion de la llamada: "<<usuarios[i].llam[j].tiempo<<endl;
  56.             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;
  57.             cout<<endl<<endl;
  58.         }
  59.       cout<<"..................................................."<<endl;
  60.       }
  61. cout<<endl<<endl;
  62.  
  63. }
  64. void consumo(LineaControl usuarios[],int &n,char numTlf,int mes)
  65. {
  66.      int posic;
  67.       for(int i=1;i<n;i++)
  68.       {    float mayor=0;
  69.            for(int j=1;j<=usuarios[i].nllam;j++)  //busco quien tiene el tiempo mayor
  70.            {   if(usuarios[i].llam[j].tiempo>mayor)
  71.                {mayor=usuarios[i].llam[j].tiempo;}
  72.            }
  73.            for(int j=1;j<=usuarios[i].nllam;j++)  //busco a quien le pertenece el numero mayor
  74.            {    if(mayor==usuarios[i].llam[j].tiempo)
  75.                 {posic=j;}  //marco la posicion
  76.            }
  77.            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;
  78.      
  79.       }
  80.  
  81.  
  82. }
  83.  
  84. void BuscaPersona(LineaControl usuarios[],int &n)
  85. {    int i,j,pos=-1;
  86.      char busca[30],k;
  87.  
  88.      cout<<"Ingrese el nombre de la persona a buscar: "; gets(busca);
  89.      for(i=0;i<n;i++)
  90.      {   if(strcmp(busca,usuarios[i].usuario)==0)
  91.          {   cout<<"ttDatos de la persona"<<endl;
  92.              cout<<"Nombre: "<<usuarios[i].usuario<<endl;
  93.              cout<<"Numero: "<<usuarios[i].numero<<endl;
  94.              pos=i;
  95.          }
  96.      }
  97.      if(pos==-1)
  98.      { cout<<"No se encontro persona"<<endl;}
  99.      cout<<"desea buscar otra persona s/n: ";   cin>>k;
  100.  
  101.      
  102. }
  103.  
  104. void BorraPersona(LineaControl usuarios[],int &n)
  105. {    int pos=-1,i;
  106.      char elimina[30];
  107.      cout<<"Ingrese el nombre de la persona a eliminar: "; gets(elimina);
  108.      for(i=0;i<n;i++)
  109.      {   if(strcmp(elimina,usuarios[i].usuario)==0)
  110.          { pos=i;break;}
  111.      }
  112.      if(pos==-1)
  113.      cout<<"ttNo se encontro a la persona"<<endl;
  114.      else
  115.      for(i=pos+1;i<n;i++)
  116.      {   usuarios[i-1]=usuarios[i];}
  117.      n--;
  118. }
  119.      
  120. int main()
  121. {    int personas,i,n=1;
  122.      fecha f;
  123.      
  124.      cout<<"Ingrese la cantidad de personas a procesar: ";  cin>>personas;
  125.      
  126.      for(i=1;i<=personas;i++)
  127.      {    IngresaDatos(usuarios,n);
  128.      
  129.      }
  130.      ImprimeDatos(usuarios,n);
  131.      BuscaPersona(usuarios,n);
  132.      consumo(usuarios,n,llam.numTlf,f.mes);
  133.      
  134.      
  135.      system("PAUSE");
  136.      return 0;
  137. }
  138.  
  139.