Advertisement
pmanriquez93

Parte 1 LP 2013-2 just for noobs

Oct 11th, 2014
508
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.79 KB | None | 0 0
  1. // CABECERA
  2. #ifndef FUNCS_H
  3. #define FUNCS_H
  4.  
  5. void leeAutores(void *&);
  6. void imprimirAutores(void *);
  7.  
  8. void **colocarAutor(int *,char *,double *);
  9. void **memoriaExacta(void **,int);
  10.  
  11. #endif  /* FUNCS_H */
  12.  
  13.  
  14.  
  15. // IMPLEMENTACION
  16. #include <cstdlib>
  17. #include <cstdio>
  18. #include <cstring>
  19.  
  20. #include "funcs.h"
  21.  
  22. void leeAutores(void *&autores){
  23.     void *auxAutores[500];       int numAutores = 0;  
  24.     double *porcAutor;      char *nombAutor;    int *codAutor;
  25.    
  26.     int buffCodAutor, i = 0;
  27.     while (1){
  28.         // Leo todo normal
  29.         if (scanf("%d",&buffCodAutor)==0) break;
  30.         double buffPorcAutor;   char buffPal[30], buffNombAutor[100];
  31.        
  32.         scanf("%s",buffNombAutor);  
  33.         while (1){
  34.             if(scanf("%lf",&buffPorcAutor)==1) break;
  35.             scanf("%s",buffPal);
  36.             if (i > 1) strcat(buffNombAutor,"-");
  37.             else strcat(buffNombAutor,"/");
  38.             strcat(buffNombAutor,buffPal);
  39.             i++;
  40.         }
  41.         i = 0; //Reinicio el contador de apellidos
  42.         // Le doy memoria exacta a todos
  43.         double *porcAutor;      char *nombAutor;    int *codAutor;
  44.         codAutor = new int;
  45.         *codAutor = buffCodAutor;
  46.        
  47.         nombAutor = new char[strlen(buffNombAutor)+1];
  48.         strcpy(nombAutor,buffNombAutor);
  49.        
  50.         porcAutor = new double;
  51.         *porcAutor = buffPorcAutor;
  52.        
  53.         auxAutores[numAutores] = colocarAutor(codAutor,nombAutor,porcAutor);
  54.         numAutores++;
  55.     }
  56.     autores = memoriaExacta(auxAutores,numAutores);    
  57. }
  58.  
  59. void **colocarAutor(int *codAutor,char *nombAutor,double *porcAutor){
  60.     void **regAutor = new void*[4];
  61.     regAutor[0] = codAutor;
  62.     regAutor[1] = nombAutor;
  63.     regAutor[2] = porcAutor;
  64.     regAutor[3] = NULL;
  65.     return regAutor;
  66. }
  67.  
  68. void **memoriaExacta(void **auxAutores,int cantDatos){
  69.     void **autores = new void*[cantDatos+1];
  70.     for(int i = 0; i < cantDatos; i++)
  71.         autores[i] = auxAutores[i];
  72.     autores[cantDatos] = NULL;
  73.     return autores;
  74. }
  75.  
  76. void imprimirAutores(void *autoresVoid){
  77.     void **autores = (void**) autoresVoid;
  78.     for(int i = 0; autores[i]; i++){
  79.         void **autor = (void**)autores[i];
  80.         int *cod = (int *)(autor[0]);
  81.         char *nomb = (char *)(autor[1]);
  82.         double *porc = (double *)(autor[2]);
  83.         printf("%12d %-50s %4.2lf \n",*cod,nomb,*porc);
  84.     }
  85. }
  86.  
  87.  
  88.  
  89.  
  90. // MAIN
  91. #include <cstdlib>
  92. #include <cstdio>
  93. #include <cstring>
  94.  
  95. #include "funcs.h"
  96.  
  97. using namespace std;
  98.  
  99. /*
  100.  *
  101.  */
  102. int main(void) {
  103.     void *autores, *separados;
  104.     leeAutores(autores);
  105.     imprimirAutores(autores);
  106.     //leeVentas(autores);
  107.     //pagoAutores(autores/*,????*/);
  108.     //separarAutores(autores,separados/*,????*/);
  109.     //reporte(autores,separados);
  110.     return 0;
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement