Advertisement
xlujiax

RegCurso

Oct 23rd, 2017
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.32 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <iomanip>
  4. #include <cstring>
  5.  
  6. using namespace std;
  7.  
  8. void leerDatosCurso(char* &codigo, double &creditos, char* &nombre){
  9.     char auxCadena[100];  //Leemos un codigo y lo guardamos en memoria dinamica
  10.     cin >> auxCadena;
  11.     codigo = new char[strlen(auxCadena)+1];
  12.     strcpy(codigo, auxCadena);
  13.     cin >> creditos;
  14.     cin >> ws;
  15.     cin.getline(auxCadena, 100, '\n');
  16.     nombre = new char[strlen(auxCadena)+1];
  17.     strcpy(nombre, auxCadena);
  18. }
  19.  
  20. void ** nuevoRegistro(){
  21.     char* codigo, *nombre;
  22.     double creditos;
  23.     leerDatosCurso(codigo, creditos, nombre);
  24.    
  25.     void** regCurso = new void*[3];
  26.     regCurso[0] = codigo;
  27.     regCurso[2] = nombre;
  28.    
  29.     double *auxCreditos = new double;
  30.     *auxCreditos = creditos;
  31.     regCurso[1]= auxCreditos;
  32.    
  33.     return regCurso;    
  34. }
  35.  
  36. void imprimirRegCurso(void** regCurso){
  37.     char* ptrCodigo = (char*) regCurso[0];
  38.     double *ptrCred = (double *) regCurso[1];
  39.     char* ptrNombre = (char*) regCurso[2];
  40.    
  41.     cout << "Codigo: " << (char*) regCurso[0] << endl;
  42.     cout << "Creditos: " << *ptrCred << endl;
  43.     cout << "Nombre: " << ptrNombre << endl;
  44.    
  45. }
  46.  
  47. int main(int argc, char** argv) {
  48.     void ** regCursos;
  49.    
  50.     regCursos = nuevoRegistro();
  51.     //leerDatosCurso(codigo, creditos, nombre);    
  52.     imprimirRegCurso(regCursos);
  53.     /*void *ptrA, *ptrB;
  54.     int a = 10; // Un tipo de dato
  55.     ptrA = &a;
  56.     int*b = new int;
  57.     *b = 20;    // Una variable de tipo puntero a entero
  58.     ptrB = b;
  59.    
  60.     cout << "Prueba: void* a int* (unico elem.)\n";
  61.     cout << *(int*)ptrA << endl;    
  62.     cout << *(int*)ptrB << endl;  
  63.    
  64.     int *c  = new int[5];
  65.     for (int i = 0; i < 5; i++) {
  66.         c[i]= i+1;
  67.     }
  68.    
  69.     void *ptrC;
  70.     ptrC = c;
  71.    
  72.     cout << *(int*)ptrC << endl;  //Apunta solo a la cabecera
  73.    
  74.     void**ptrRec = (void**)ptrC;
  75.     for (int i = 0; i < 5; i++) {
  76.         cout << i << ") ";
  77.         cout << *((int*)ptrRec+i) << " " << endl; //Aritmetica de ptros
  78.         cout << ((int*)ptrRec)[i] << " " << endl; //Operador de acceso
  79.        
  80.         //int *auxInt = ((int*)ptrRec+i);   //Aritmetica de ptros
  81.         int *auxInt = &((int*)ptrRec)[i]; //Operador de acceso
  82.          
  83.         cout << *auxInt << endl;
  84.     }
  85.    */
  86.     return 0;
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement