elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


  Mostrar Mensajes
Páginas: 1 [2] 3
11  Programación / Programación C/C++ / Re: C++ OOP vectores de clases - como crear un vector de una clase en: 19 Febrero 2017, 22:02 pm
Hola!, mira precisamente porque quiero entender a trabajar con esos tres conceptos, pienso que realizar un ejercicio de ese tipo, podría ayudarme.

Este es el ejercicio final que me gustaría poder resolver y así entender la lógica de los tres conceptos que señalas:

Código
  1.  
  2.  
  3. #include <iostream>
  4. #include <iomanip>
  5. #include <cstdlib>
  6. #include <stdio.h>
  7. #include <vector>
  8.  
  9. using namespace std;
  10.  
  11. class Patient
  12. {
  13. private:
  14.    string fname;
  15.    string sname;
  16.  
  17. public:
  18. ~Patient(){}
  19.  
  20. Patient(){ }
  21.  
  22. void setFistname(string _fname)
  23. { fname = _fname; }
  24.  
  25. void setSecondname(string _sname)
  26. { sname = _sname; }
  27.  
  28. string getSecondname() const { return sname; }
  29. string getFistname() const { return fname; }
  30. };
  31.  
  32. class PatientDatenbank : protected Patient
  33. {
  34.   protected:
  35. //vector tipo clase Patient.
  36.   vector<Patient> vielePatient;
  37.   public:
  38.   PatientDatenbank(){}
  39.   //Copia del vector clase Patient
  40.   vector<Patient> GetCopyOfVector()
  41.   { return vielePatient; }
  42.  
  43. // Escribir en la copia del vector
  44. void patInsert(vector<Patient>& vielePatient)
  45.    {    
  46.         vielePatient.push_back(datenbank);
  47.         cout << endl;
  48.    }
  49.  
  50. // Imprimir el vector en pantalla
  51.    void printVectorPatientDatenbank(const vector<Patient>& vielePatient)
  52.    {
  53.        int i;
  54.        int size = vielePatient.size();
  55.  
  56.        for(i=0; i<size; i++)
  57.        {
  58. cout << vielePatient[i].getFistname() << " " << vielePatient[i].getSecondname() << endl;
  59.        }
  60.    }
  61. };
  62.  
  63. int main()
  64. {
  65. string _sname, _fname;
  66. // Patient patient01;
  67.   PatientDatenbank datenbank;
  68.  
  69. cout<<"Apellido: ";
  70. cin >> _fname;
  71. // patient01.setFistname(_fname);
  72. datenbank.setFistname(_fname);
  73.  
  74. cout<<"Nombre: ";
  75. cin >> _sname;
  76. // patient01.setFistname(_sname);
  77. datenbank.setSecondname(_sname);
  78.  
  79.    return 0;
  80. }
  81.  
  82.  

Mi problema radica seguramente en la forma que estoy tratando de acceder al vector. De una parte, pienso que la copia que crea de él está mal. La otra parte que creo errada es la forma en que intento traspasar desde main la información de mi objeto a la clase "PatientDatenbank" que es la que tiene el vector.

El error que recibo es: datenbank no ha sido declarado.

Saludo,
Gisi
12  Programación / Programación C/C++ / Re: C++ OOP vectores de clases - como crear un vector de una clase en: 17 Febrero 2017, 22:39 pm
( :huh: He intentado publicar ya por tercera vez y salgo volando...)

Y funcionó tu corrección!!! ;-)

Código
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4.  
  5. using namespace std;
  6.  
  7. //Klasse einrichten
  8. class Patient
  9. {
  10. private:
  11.    string fname;
  12.    string sname;
  13.  
  14. public:
  15. ~Patient(){}
  16.  
  17. Patient(){ }
  18.  
  19. void setFistname(string _fname)
  20. { fname = _fname; }
  21.  
  22. void setSecondname(string _sname)
  23. { sname = _sname; }
  24.  
  25. string getSecondname() const { return sname; }
  26. string getFistname() const { return fname; }
  27. };
  28.  
  29. int main()
  30. {
  31. string _sname, _fname;
  32.  
  33. vector<Patient>vielePatient;
  34. Patient a;
  35.  
  36. cout<<"Apellido: ";
  37. cin >> _fname;
  38. a.setFistname(_fname);
  39.  
  40. cout<<"Nombre: ";
  41. cin >> _sname;
  42. a.setSecondname(_sname);
  43.  
  44. vielePatient.push_back(a);
  45.  
  46. for(int i=0; i<=vielePatient.size(); i++)
  47. {
  48. cout << vielePatient[i].getFistname() << " " << vielePatient[i].getSecondname() << endl;
  49. }
  50.  
  51. return 0;
  52. }
  53.  
  54.  

Ahora me gustaría aprender hacer lo anterior pero con el vector en una clase hija bajo private.  :D
13  Programación / Programación C/C++ / Re: C++ OOP vectores de clases - como crear un vector de una clase en: 17 Febrero 2017, 22:34 pm
Ohh! Funcionó!!  ;-)
Código
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4.  
  5. using namespace std;
  6.  
  7. //Klasse einrichten
  8. class Patient
  9. {
  10. private:
  11.    string fname;
  12.    string sname;
  13.  
  14. public:
  15. ~Patient(){}
  16.  
  17. Patient(){ }
  18.  
  19. void setFistname(string _fname)
  20. { fname = _fname; }
  21.  
  22. void setSecondname(string _sname)
  23. { sname = _sname; }
  24.  
  25. string getSecondname() const { return sname; }
  26. string getFistname() const { return fname; }
  27. };
  28.  
  29. int main()
  30. {
  31. string _sname, _fname;
  32.  
  33. vector<Patient>vielePatient;
  34. Patient a;
  35.  
  36. cout<<"Apellido: ";
  37. cin >> _fname;
  38. a.setFistname(_fname);
  39.  
  40. cout<<"Nombre: ";
  41. cin >> _sname;
  42. a.setSecondname(_sname);
  43.  
  44. vielePatient.push_back(a);
  45.  
  46. for(int i=0; i<=vielePatient.size(); i++)
  47. {
  48. cout << vielePatient[i].getFistname() << " " << vielePatient[i].getSecondname() << endl;
  49. }
  50.  
  51. return 0;
  52. }
  53.  


Ahora me gustaría aprender el cómo se hace con el vector dentro de una clase hijo bajo private. :D

Saludos,
Gisi
14  Programación / Programación C/C++ / Re: C++ OOP vectores de clases - como crear un vector de una clase en: 17 Febrero 2017, 22:30 pm
Oh!
Funcionó!

Código
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4.  
  5. using namespace std;
  6.  
  7. //Klasse einrichten
  8. class Patient
  9. {
  10. private:
  11.    string fname;
  12.    string sname;
  13.  
  14. public:
  15. ~Patient(){}
  16.  
  17. Patient(){ }
  18.  
  19. void setFistname(string _fname)
  20. { fname = _fname; }
  21.  
  22. void setSecondname(string _sname)
  23. { sname = _sname; }
  24.  
  25. string getSecondname() const { return sname; }
  26. string getFistname() const { return fname; }
  27. };
  28.  
  29. int main()
  30. {
  31. string _sname, _fname;
  32.  
  33. vector<Patient>vielePatient;
  34. Patient a;
  35.  
  36. cout<<"Apellido: ";
  37. cin >> _fname;
  38. a.setFistname(_fname);
  39.  
  40. cout<<"Nombre: ";
  41. cin >> _sname;
  42. a.setSecondname(_sname);
  43.  
  44. vielePatient.push_back(a);
  45.  
  46. for(int i=0; i<=vielePatient.size(); i++)
  47. {
  48. cout << vielePatient[i].getFistname() << " " << vielePatient[i].getSecondname() << endl;
  49. }
  50.  
  51. return 0;
  52. }
  53.  
  54.  
;-)

Ahora me gustaría aprender el cómo hacer lo mismo con el vector en una clase.
15  Programación / Programación C/C++ / Re: C++ OOP vectores de clases - como crear un vector de una clase en: 17 Febrero 2017, 17:04 pm
Hola! Que bueno que sepas trabajar con vectores de clase!

Yo no tengo mucha idea como trabajar con ellos.

Mi consulta es más bien un experimento propio en que intento utilizar el vector. Acá te dejo mis primeras andanzas. El siguiente código es el único que he logrado hacer funcionar con un vector de clases.

Código
  1.  
  2. #include <iostream>
  3. #include <string>
  4. #include <vector>
  5.  
  6. using namespace std;
  7.  
  8. class Patient
  9. {
  10.  
  11. public:
  12.    string sname;
  13.    string fname;
  14.  
  15. };
  16.  
  17. int main()
  18. {
  19.    //Vektor de objetos, crear
  20.    vector<Patient>vielePatient;
  21.    //Objekt de clase, crear
  22.   Patient a;
  23.  
  24.  
  25.    cout<<"Apellido: ";
  26.    cin>>a.sname;
  27.      cin.clear();
  28.    cout<<"Nombre: ";
  29. cin>>a.fname;
  30.      cin.clear();
  31.  
  32.    vielePatient.push_back(a);
  33.  
  34.  
  35. for(int i=0; i<=vielePatient.size(); i++)
  36. { cout << vielePatient[i].fname << " " << vielePatient[i].sname << endl;
  37.   }
  38.  
  39.    return 0;
  40. }
  41.  
  42.  

El siguiente paso, que quiero aprender es cómo acceder a las variables cuando ellas están en private:

Código
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4.  
  5. using namespace std;
  6.  
  7. //Klasse einrichten
  8. class Patient
  9. {
  10. private:
  11.    string sname;
  12.    string fname;
  13.  
  14. public:
  15.      // Patient(){fname = ' '; sname = ' ';}
  16.      ~Patient(){}
  17.  
  18.      Patient(string _sname, string _fname)
  19.      {     sname = _sname;
  20.         fname = _fname;
  21.   }
  22.  
  23.      void setNachname(string _sname)
  24.      {    sname = _sname; }
  25.  
  26.      void setVorname(string _fname)
  27.      {    fname = _fname; }
  28.  
  29.      string getVorname() const { return fname; }
  30.      string getNachname() const { return sname; }
  31. };
  32.  
  33. int main()
  34. {
  35.  
  36.    vector<Patient>vielePatient;
  37.  
  38. Patient a;
  39.  
  40.    cout<<"Apellido: ";
  41.    cin>>a.sname;
  42.      cin.clear();
  43.    cout<<"Nombre: ";
  44. cin>>a.fname;
  45.      cin.clear();
  46.  
  47.    vielePatient.push_back(a);
  48.  
  49.  
  50. for(int i=0; i<=vielePatient.size(); i++)
  51. { cout << vielePatient[i].fname << " " << vielePatient[i].sname << endl;
  52.   }
  53.  
  54.    return 0;
  55. }
  56.  

Ahora bien, si desde la funión main se puede acceder a un vector de clase, también debe ser posible hacerlo si el vector está alojado en otra clase que hereda la información de otra.

¿Porqué quiero lograr eso?
Porque sería interesante poder captar la información en un vector que, al estar un private no puede ser sobreescrito, lo que mantiene los datos seguros, y permite, digamos, una sencilla, dinámica, eficiente y elegante forma de acceder a los datos.

Mi idea final es crear una clase, podría llamarse PatientBancoDatos cuya única función es recibir los datos de las clases superiores y los imprima en pantalla.

Espero que la idea está algo más clara.

Saludos,
Gisi
16  Programación / Programación C/C++ / Re: C++ OOP vectores de clases - como crear un vector de una clase en: 16 Febrero 2017, 20:55 pm
Mh... Sabes trabajar con vectores de clases?
17  Programación / Programación C/C++ / Re: C++ OOP vectores de clases - como crear un vector de una clase en: 16 Febrero 2017, 00:01 am
Hola! Muchas gracias!

Sin embargo, no es lo que necesito. Este código debe tener solución sin friends.

El tema de fondo es como captar los datos de la clase base en un vector-de-clase en la clase que hereda.  :huh:

18  Programación / Programación C/C++ / Re: C++ OOP vectores de clases - como crear un vector de una clase en: 15 Febrero 2017, 18:36 pm
Hola, gracias por la respuesta. Sin embargo, lo que me señalas fue un error de omisión, al traspasar a gran velocidad esta parte desde un código más completo. Seguramente habrá otras omisiones... espero, que no. He corregido el código.

La clase Patient pretende efectivamente heredar de la clase base Person, por lo que es, como señalas, correcto que las variables en la clase base, se encuentren en protected. El tema es, cómo tomo los datos en protected para alojarlos en el vector de clase, de la clase que hereda.

Saludos y muchas gracias!
Gisi
19  Programación / Programación C/C++ / C++ OOP vectores de clases - como crear un vector de una clase en: 15 Febrero 2017, 15:42 pm
Hola a todos,

hay entre UD. quién pueda ayudarme a resolver el siguiente problema?

Ha buscado en innumerables foros, pero, al parecer resulta ser un tema poco tratado.

El siguiente programa consta de dos clases. Una clase base Person que aloja fname y sname de forma protected. La segunda clase Patient quiere tomar esos valores y alojarlos en un vector (y agrega además el valor edad. Para simplificar el tema, he dejado fuera age.)

La función main() crea un objeto Patient.

Sin embargo, no he logrado capt;ar e imprimir en pantalla esa creación.

Alguien puede ayudarme a corregir el código de modo tal que pueda imprimir en pantalla los resultados?

Acá el código:

Código:

#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <stdio.h>
#include <vector>

using namespace std;

class Person
{
protected:
string fname;
string sname;
public:
//   Person(){fname = ' '; sname = ' ';}
~Person(){}

Patient(string names, string namef)
{ sname = names;
fname = namef; }


void setNachname(string names)
    { sname = names; }
    void setVorname(string namef)
    { fname = namef; }

string getVorname() const { return fname; }
string getNachname() const { return sname; }

};

class Patient : protected Person
{
protected:
vector<Person> pDB;
//int age;
public:
Patient(){}
~Patient(){}

vector<Person> GetCopyOfVector()
{ return pDB; }


// Agrega el/los objetos creados al vector de la clase Person.
// Toma el vector por referencia para evitar duplicados.
void patInsert(vector<Person>& pDB)
{
pDB.push_back(pDB);
cout << endl;
}

// Imprime el resultado. Capta al vector de forma const
// para evitar modificaciones del vector.
void printVectorPatient(const vector<Person>& pDB)
{
    int i;
    int size = pDB.size();

    for(i=0; i<size; i++)
    {
cout << "Name Patient: " << pDB[i] << endl;
    }
}
};

int main()
{
// Crea un nuevo objeto.
Patient PatDB("ma", "mo");
PatDB.patInsert(PatDB);
PatDB.printVectorPatient(PatDB);

return 0;
}


Muy agradecida  :D,
Gisi
20  Programación / Programación C/C++ / Re: ¿Consulta sobre C + MySQL, traspaso del resultado de una consulta MySQL a C? en: 8 Abril 2014, 16:00 pm
Oh! Gracias por la orientación. Le daré un intento. Si logro el resultado buscado colocaré acá la solución completa, para quién pueda servirle!
Saludos!



¡Hola amigas y amigos!

Lamentablemente no he podido avanzar en mi problema. Soy novata en C API y por mucho que he buscado en internet, no logro llegar a la solución. La respuesta que se me entregó acá fue demasiado genérica que sinceramente agradezco mucho pero que lamentablemente no me sirvió los suficiente.

A lo q

Código
  1.  
  2.  



¡Hola amigas y amigos!

Estoy haciendo un ejercicio personal, con el fin de ensayar C API (C+MySQL y GTK).

Lamentablemente no he podido avanzar en mi problema. Soy novata en C API y por mucho que haya buscado en internet (también en la página oficial de MySQL), no logro llegar a la solución. La respuesta que se me entregó acá que sinceramente agradezco mucho fue lamentablemente muy genérica y no me sirvió lo suficiente.

A lo que he llegado es lo siguiente.

Código
  1. //Archivo que incluyo para establecer si hubo error al establecer conexión con la base de datos.
  2. #include "finish_with_error.h"
  3.  
  4. //Valores que vienen traspasados desde otra funcion.                                        
  5. void conectar(char array_fecha_fact[11], char array_fase_trabajada[257], char array_hrs_totales[4], float float_std_lohn, int int_id_empresas){
  6.  
  7. //Declaracion de variables que usare
  8. MYSQL   *conn;            
  9. char    q[1024],          
  10. sum_horas_mensual[4];
  11.  
  12. //Se establece la conexion con la Base de Datos
  13. conn = mysql_init(NULL);  
  14. mysql_real_connect(conn, "localhost", "fact", "mi_clave_supersecreta_y_supersegura", "facturas", 0, NULL, 0);
  15.  
  16. //Aca intento realizar la consulta a la Base de Datos, de la que quiero capturar el resultado            
  17. cant_horas_resultado = mysql_query(conn, "SELECT SUM(hras_trab) FROM Horas_trabajad as WHERE mes='Februar'");
  18. MYSQL_RES *result = mysql_store_result(cant_horas_resultado);
  19.  
  20. //Aca intento traspasar el valor (un valor entero o decimal) a la Base de Datos por medio de la siguiente secuencia:
  21. sprintf(q,"INSERT INTO Facturas(id_fact, fecha, cant_horas, horario, hora_salario, id_empresas) VALUES('', '%s', '%s', 'algo_muy_importante_dice_aca', '%g', '%i')\n", array_fecha_fact, sum_horas_mensual, float_a, int_id_empresas);                              
  22.  
  23.       mysql_query(conn, q);    
  24.       finish_with_error(conn);    
  25.  
  26.  
  27.       mysql_close(conn);        
  28.    }

No sé si realizo mal la consulta para obtener el valor, o si lo que hago mal es el traspaso del valor a la base de datos o si ambos.

Espero que algún genio puedo orientarme.
Saludos a todos,
Gisi
Páginas: 1 [2] 3
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines