Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // CABECERA
- #ifndef FUNCS_H
- #define FUNCS_H
- void leeAutores(void *&);
- void imprimirAutores(void *);
- void **colocarAutor(int *,char *,double *);
- void **memoriaExacta(void **,int);
- #endif /* FUNCS_H */
- // IMPLEMENTACION
- #include <cstdlib>
- #include <cstdio>
- #include <cstring>
- #include "funcs.h"
- void leeAutores(void *&autores){
- void *auxAutores[500]; int numAutores = 0;
- double *porcAutor; char *nombAutor; int *codAutor;
- int buffCodAutor, i = 0;
- while (1){
- // Leo todo normal
- if (scanf("%d",&buffCodAutor)==0) break;
- double buffPorcAutor; char buffPal[30], buffNombAutor[100];
- scanf("%s",buffNombAutor);
- while (1){
- if(scanf("%lf",&buffPorcAutor)==1) break;
- scanf("%s",buffPal);
- if (i > 1) strcat(buffNombAutor,"-");
- else strcat(buffNombAutor,"/");
- strcat(buffNombAutor,buffPal);
- i++;
- }
- i = 0; //Reinicio el contador de apellidos
- // Le doy memoria exacta a todos
- double *porcAutor; char *nombAutor; int *codAutor;
- codAutor = new int;
- *codAutor = buffCodAutor;
- nombAutor = new char[strlen(buffNombAutor)+1];
- strcpy(nombAutor,buffNombAutor);
- porcAutor = new double;
- *porcAutor = buffPorcAutor;
- auxAutores[numAutores] = colocarAutor(codAutor,nombAutor,porcAutor);
- numAutores++;
- }
- autores = memoriaExacta(auxAutores,numAutores);
- }
- void **colocarAutor(int *codAutor,char *nombAutor,double *porcAutor){
- void **regAutor = new void*[4];
- regAutor[0] = codAutor;
- regAutor[1] = nombAutor;
- regAutor[2] = porcAutor;
- regAutor[3] = NULL;
- return regAutor;
- }
- void **memoriaExacta(void **auxAutores,int cantDatos){
- void **autores = new void*[cantDatos+1];
- for(int i = 0; i < cantDatos; i++)
- autores[i] = auxAutores[i];
- autores[cantDatos] = NULL;
- return autores;
- }
- void imprimirAutores(void *autoresVoid){
- void **autores = (void**) autoresVoid;
- for(int i = 0; autores[i]; i++){
- void **autor = (void**)autores[i];
- int *cod = (int *)(autor[0]);
- char *nomb = (char *)(autor[1]);
- double *porc = (double *)(autor[2]);
- printf("%12d %-50s %4.2lf \n",*cod,nomb,*porc);
- }
- }
- // MAIN
- #include <cstdlib>
- #include <cstdio>
- #include <cstring>
- #include "funcs.h"
- using namespace std;
- /*
- *
- */
- int main(void) {
- void *autores, *separados;
- leeAutores(autores);
- imprimirAutores(autores);
- //leeVentas(autores);
- //pagoAutores(autores/*,????*/);
- //separarAutores(autores,separados/*,????*/);
- //reporte(autores,separados);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement