Advertisement
xlujiax

LstCursos

Oct 26th, 2017
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.48 KB | None | 0 0
  1. #include <cstdlib>
  2. #include <cstdio>
  3. #include "cursos.h"
  4.  
  5. using namespace std;
  6.  
  7.  
  8.  
  9. int main(int argc, char** argv) {
  10.     freopen("cursos.txt", "r", stdin);
  11.     void* lstCursos;
  12.     leerLstCursos(lstCursos);
  13.     imprimirLstCursos(lstCursos);
  14.     return 0;
  15. }
  16.  
  17. //Cursos.cpp
  18.  
  19. #include <iostream>
  20. #include "cursos.h"
  21. #include <cstring>
  22. #define N 10
  23.  
  24. using namespace std;
  25.  
  26. void imprimirRegCurso(void** regCurso){
  27.     char* codigo = (char*)regCurso[0];
  28.     double* credito = (double*)regCurso[1];
  29.     char* nombre = (char*)regCurso[2];
  30.     cout << "Codigo: " << codigo << endl;
  31.     cout << "Creditos: " << *credito << endl;
  32.     cout << "Nombre: " << nombre << endl;
  33. }
  34.  
  35. void imprimirLstCursos(void *lstCursos){
  36.     void** recLstCursos = (void**) lstCursos;
  37.     for (int i = 0; i < recLstCursos[i] != NULL; i++) {
  38.         void** regCurso = (void**)recLstCursos[i];
  39.         imprimirRegCurso(regCurso);
  40.         cout << endl;
  41.     }
  42.  
  43. }
  44.  
  45. void fitSize(void*** input, void*& output, int numElem){
  46.     void *** auxOutPut = new void**[numElem+1];
  47.     for (int i=0; i<numElem; i++) auxOutPut[i] = input[i];
  48.     auxOutPut[numElem] = NULL;
  49.     output = auxOutPut;
  50. }
  51.  
  52. void leerDatosCurso(char* &codigo, double*& creditos, char*& nombre){
  53.     char auxCadena[100];
  54.     cin >> auxCadena;
  55.     codigo = new char[strlen(auxCadena)+1];
  56.     strcpy(codigo, auxCadena);
  57.    
  58.     creditos = new double;
  59.     cin >> *creditos;    
  60.     cin >> ws;
  61.    
  62.     cin.getline(auxCadena, 100, '\n');
  63.     nombre = new char[strlen(auxCadena)+1];
  64.     strcpy(nombre, auxCadena);
  65. }
  66.  
  67. void** nuevoRegistroCurso(){
  68.     void** regCurso = new void*[3];
  69.     char* codigo, *nombre;
  70.     double* creditos;
  71.    
  72.     leerDatosCurso(codigo, creditos, nombre);
  73.    
  74.     regCurso[0] = codigo;
  75.     regCurso[1] = creditos;
  76.     regCurso[2] = nombre;  
  77. }
  78.  
  79. void leerLstCursos(void* &lstCursos){
  80.     int numCursos = 0;
  81.     void** bufferCursos[N];
  82.        
  83.     while(!cin.eof()){
  84.         void** regCurso = nuevoRegistroCurso();
  85.         bufferCursos[numCursos++] = regCurso;
  86.         cin >> ws;
  87.     }
  88.     fitSize(bufferCursos, lstCursos, numCursos);    
  89. }
  90.  
  91. //Cursos.h
  92. #ifndef CURSOS_H
  93. #define CURSOS_H
  94.  
  95. void leerDatosCurso(char* &codigo, double* & creditos, char* &nombre);
  96. void imprimirRegCurso(void** regCurso);
  97. void** nuevoRegistroCurso();
  98.  
  99. void fitSize(void*** input, void*** &output, int numElem);
  100.  
  101. void leerLstCursos(void* &lstCursos);
  102. void imprimirLstCursos(void* lstCursos);
  103.  
  104. #endif /* CURSOS_H */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement