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

 

 


Tema destacado: Introducción a Git (Primera Parte)


  Mostrar Mensajes
Páginas: 1 ... 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 [36] 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 ... 161
351  Programación / Programación C/C++ / Re: C++ PUNTEROS a clases POO en: 6 Septiembre 2018, 18:25 pm
Desde mi ignorancia de C++ hice este código:

Código
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. class persona {
  6. private:
  7.    string nom;
  8.    string id;
  9.  
  10. public:
  11.    persona(){
  12.        nom="";
  13.        id="";
  14.    }
  15.  
  16.    persona(string n, string i) : nom(n), id(i) {}
  17.  
  18.    persona(const persona &p) : nom(p.nom), id(p.id) {} // Este copia sirve para objetos en stack
  19.  
  20.    persona(const persona *p) : nom(p->nom), id(p->id) {} // Este copia sirve para objetos en heap
  21.  
  22.    string getNom() {
  23.        return nom;
  24.    }
  25.  
  26.    string getId(){
  27.        return id;
  28.    }
  29.  
  30.    void setNom(string n){
  31.        nom = n;
  32.    }
  33.  
  34.    void setId(string i){
  35.        id = i;
  36.    }
  37. };
  38.  
  39. class coleccion{
  40. private:
  41.    persona *p[10];
  42.    int cantidad;
  43.  
  44. public:
  45.    coleccion() {
  46.        cantidad=0;
  47.    }
  48.  
  49.    void ingresarPersona(persona *pe) {
  50.        if(cantidad<10) {
  51.            p[cantidad]=pe;
  52.            cantidad++;
  53.        }
  54.    }
  55.  
  56.    persona* devuelve(int i) {
  57.        return p[i];
  58.    }
  59.  
  60.    ~coleccion() {
  61.        for(int i=0; i<cantidad; i++){
  62.            delete p[i];
  63.        }
  64.    }
  65. };
  66.  
  67. int main() {
  68.    coleccion *c = new coleccion;
  69.    persona *p1 = new persona("JUAN","12345");
  70.    persona *p2 = new persona("PEDRO","45678");
  71.  
  72.    c->ingresarPersona(p1);
  73.    c->ingresarPersona(p2);
  74.  
  75.    for(int i=0; i<2; ++i)
  76.        cout<<"c->devuelve("<<i<<")->getNom() = "<<c->devuelve(i)->getNom()<<"\n";
  77.    cout<<endl;
  78.  
  79.    persona *p3;
  80.    p3 = new persona(c->devuelve(0));
  81.    c->ingresarPersona(p3);
  82.  
  83.    for(int i=0; i<3; ++i)
  84.        cout<<"c->devuelve("<<i<<")->getNom() = "<<c->devuelve(i)->getNom()<<"\n";
  85.    cout<<endl;
  86.  
  87.    c->devuelve(2)->setNom("CAMBIO");
  88.  
  89.    for(int i=0; i<3; ++i)
  90.        cout<<"c->devuelve("<<i<<")->getNom() = "<<c->devuelve(i)->getNom()<<"\n";
  91.    cout<<endl;
  92. }
352  Programación / Programación C/C++ / Re: Recorrer un archivo recursivamente. en: 6 Septiembre 2018, 14:59 pm
Para hacer algo bonito debes hacer uso de dos funciones: Una que usarás de interfaz y la otra quien realmente trabajará con la recursión.

Cuidado que el archivo puede estar vacío y deberías comprobar eso antes de usar estas funciones. Otra idea sería modificar la función inicial para que devuelva si ha habido error accediendo al archivo o éste se encuentra vacío y devuelva por referencia el valor conseguido.

Código
  1. static int f_interno(FILE *fp, int menor) {
  2.    if(!feof(fp)) {
  3.        int actual;
  4.        int siguiente;
  5.        fread(&actual, sizeof(int), 1, fp);
  6.        siguiente = f_interno(fp, menor);
  7.        menor = actual<siguiente? actual : siguiente;
  8.    }
  9.    return menor;
  10. }
  11.  
  12. int f(FILE *fp) {
  13.    int menor;
  14.    fread(&menor, sizeof(int), 1, fp);
  15.    menor = f_interno(fp, menor);
  16.  
  17.    return menor;
  18. }
353  Programación / Programación C/C++ / Re: C++ PUNTEROS a clases POO en: 6 Septiembre 2018, 14:51 pm
He intentado ejecutar tu código para ayudarte pero, aparte de la falta del constructor copia, faltan arreglar unos cuantos errores. No debería compilarte.

Para saber qué es y qué hace un constructor copia pásate por aquí: http://c.conclase.net/curso/?cap=029#P29_COPIA

Aunque he de decirte que, ya que tus objetos están instanciados mediante new, en vez de recibir una referencia en el argumento (que también deberías incluir este constructor), deberás recibir un puntero.
354  Programación / Programación C/C++ / Re: Programa que calcula el número más próximo al primero en: 4 Septiembre 2018, 21:58 pm
Este post es de 2011, dudo que vaya a responder.
355  Programación / Programación C/C++ / Re: Invertir contenido de una lista enlazada simple con apuntadores en: 4 Septiembre 2018, 20:26 pm
Algo así debería devolverte en tamaño en bytes que ocupa la lista. No lo he probado.

Código
  1. size_t lista_memoria_usada(tlista &lista) {
  2.    size_t retval = 0;
  3.    pnodo aux = lista.inicio;
  4.  
  5.    while(aux) {
  6.        retval += sizeof(tlista);
  7.        aux = aux->sig;
  8.    }
  9.  
  10.    return retval;
  11. }
356  Programación / Programación C/C++ / Re: Invertir contenido de una lista enlazada simple con apuntadores en: 3 Septiembre 2018, 23:55 pm
¿Qué curso estás siguiendo?
357  Programación / Programación C/C++ / Re: Ayuda con listas en: 3 Septiembre 2018, 11:12 am
En quitar_final
Código:
for(i=lista.inicio;(i->sig)->sig!=NULL;i=i->sig); // for sin efecto por el ; final
borrado=lista.final; // aun habiendo conseguido el dato en el for anterior aquí directamente apuntas a lista.final
lista.final->sig=NULL;
358  Programación / Programación C/C++ / Re: Pequeña duda sobre recursion en: 3 Septiembre 2018, 00:53 am
Así es.
359  Programación / Programación C/C++ / Re: Modificacion del orden de una lista simplemente enlazada en: 3 Septiembre 2018, 00:45 am
Pues buscas el nodo que el siguiente sea el dato buscado.
Haces que el inició de la lista apunte al siguiente dato.
Haces que el el final de la lista apunte a lo que era originalmente el inicio de la lista.
Haces que el nodo en el que estás apunte su siguiente a NULL.
Necesitarás alguna variable pnodo auxiliar.
360  Programación / Programación C/C++ / Re: Ayuda en Programa basico sobre Medidas de Dispersion en: 2 Septiembre 2018, 17:58 pm
¿Qué tal si modificas tu primer post y pones el código entre etiquetas geshi o code? Gracias.
Páginas: 1 ... 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 [36] 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 ... 161
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines