Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - MAFUS

#281
Programación C/C++ / Re: Ciclos for en listas
10 Septiembre 2018, 22:54 PM
1. De estar bien construida, i apunta al final de la lista. Pero justo con este código i valdrá NULL.

2. Añade al final de la lista el nuevo dato.

3. i apunta al último elemento, justo antes de que la lista de una vuelta entera.
#282
Puedo sobreentendre que hacen las columnas 2 y 3
Pero no veo valores conocidos para la resolución como tensiones, resistencias, voltajes, etc.
#283
Sirve para que un objeto global no sea visto desde fuera del archivo, así si hicieras una librería esa sería la forma de ocultar esas función que no quieres que la gente use. Cómo un método private en POO.
#284
Programación C/C++ / Re: C++ PUNTEROS a clases POO
6 Septiembre 2018, 18:25 PM
Desde mi ignorancia de C++ hice este código:

Código (c++) [Seleccionar]
#include <iostream>

using namespace std;

class persona {
private:
    string nom;
    string id;

public:
    persona(){
        nom="";
        id="";
    }

    persona(string n, string i) : nom(n), id(i) {}

    persona(const persona &p) : nom(p.nom), id(p.id) {} // Este copia sirve para objetos en stack

    persona(const persona *p) : nom(p->nom), id(p->id) {} // Este copia sirve para objetos en heap

    string getNom() {
        return nom;
    }

    string getId(){
        return id;
    }

    void setNom(string n){
        nom = n;
    }

    void setId(string i){
        id = i;
    }
};

class coleccion{
private:
    persona *p[10];
    int cantidad;

public:
    coleccion() {
        cantidad=0;
    }

    void ingresarPersona(persona *pe) {
        if(cantidad<10) {
            p[cantidad]=pe;
            cantidad++;
        }
    }

    persona* devuelve(int i) {
        return p[i];
    }

    ~coleccion() {
        for(int i=0; i<cantidad; i++){
            delete p[i];
        }
    }
};

int main() {
    coleccion *c = new coleccion;
    persona *p1 = new persona("JUAN","12345");
    persona *p2 = new persona("PEDRO","45678");

    c->ingresarPersona(p1);
    c->ingresarPersona(p2);

    for(int i=0; i<2; ++i)
        cout<<"c->devuelve("<<i<<")->getNom() = "<<c->devuelve(i)->getNom()<<"\n";
    cout<<endl;

    persona *p3;
    p3 = new persona(c->devuelve(0));
    c->ingresarPersona(p3);

    for(int i=0; i<3; ++i)
        cout<<"c->devuelve("<<i<<")->getNom() = "<<c->devuelve(i)->getNom()<<"\n";
    cout<<endl;

    c->devuelve(2)->setNom("CAMBIO");

    for(int i=0; i<3; ++i)
        cout<<"c->devuelve("<<i<<")->getNom() = "<<c->devuelve(i)->getNom()<<"\n";
    cout<<endl;
}
#285
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.

static int f_interno(FILE *fp, int menor) {
    if(!feof(fp)) {
        int actual;
        int siguiente;
        fread(&actual, sizeof(int), 1, fp);
        siguiente = f_interno(fp, menor);
        menor = actual<siguiente? actual : siguiente;
    }
    return menor;
}

int f(FILE *fp) {
    int menor;
    fread(&menor, sizeof(int), 1, fp);
    menor = f_interno(fp, menor);

    return menor;
}
#286
Programación C/C++ / Re: C++ PUNTEROS a clases POO
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.
#287
Este post es de 2011, dudo que vaya a responder.
#288
Algo así debería devolverte en tamaño en bytes que ocupa la lista. No lo he probado.

Código (c++) [Seleccionar]
size_t lista_memoria_usada(tlista &lista) {
    size_t retval = 0;
    pnodo aux = lista.inicio;
   
    while(aux) {
        retval += sizeof(tlista);
        aux = aux->sig;
    }
   
    return retval;
}
#289
¿Qué curso estás siguiendo?
#290
Programación C/C++ / Re: Ayuda con listas
3 Septiembre 2018, 11:12 AM
En quitar_final

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;