Lista c++ per gestire le coordinate di punti

di il
3 risposte

Lista c++ per gestire le coordinate di punti

Ciao a tutti! Devo realizzare una lista in c++ per gestire le coordinate di punti nel piano e sovraccaricare gli operatori di inserzione ed estrazione (<< e >>). Ho scritto questa parte di codice:
struct nodo {
    int val1;
    int val2;
    nodo* succ;
};

class Punto {
    nodo* p;
public:
    Punto(){p = 0;}
    ~Punto();
    void push(int,int);
    friend ostream & operator << (ostream & os, Punto a);
    friend istream & operator >> (istream & in, Punto &a);   
};

void Punto::push(int x, int y) {
    nodo* appo;
    appo=new nodo;
    appo->val1=x;
    appo->val2=y;
    appo->succ=p;
    p=appo;
}

ostream & operator << (ostream & os, Punto a) {
    nodo* pc=a.p;
    while(pc!=0) {
        os << "( " << pc->valore << " , " << pc->valore2 << " )" << endl;
        pc=pc->succ;
    }
    return os;
}

istream & operator >> (istream & in, Punto &a) {
    nodo* pc=a.p;
    cout << "Inserisci valore x: ";
    in >> pc->val1;
    cout << "Inserisci valore y: ";
    in >> pc->val2;
    a.push(pc->val1,pc->val2);
    return in;
}
Compila e non da errori però poi non so cosa scrivere nel main per introdurre i punti. Grazie!

3 Risposte

  • Re: Lista c++ per gestire le coordinate di punti

    Questo:
    
        istream & operator >> (istream & in, Punto &a) {
            nodo* pc=a.p;
            cout << "Inserisci valore x: ";
            in >> pc->val1;
            cout << "Inserisci valore y: ";
            in >> pc->val2;
            a.push(pc->val1,pc->val2);
            return in;
        }
    
    è errato. Chiedi un nodo alla lista, assegni dati a sto nodo (senza controllare se esiste) e infine allocchi un altro nodo con gli stessi dati. Si può capire cosa stai cercando di fare?
    Poi qui:
    
    friend ostream & operator << (ostream & os, Punto a);
    
    perché passi per valore invece che per riferimento costante?
    
    friend ostream & operator << (ostream & os, const Punto & a);
    
  • Re: Lista c++ per gestire le coordinate di punti

    Devo sovraccaricare l'operatore >> in modo che quando nel main faccio cin >> p (dove p è l'oggetto di tipo Punto) mi permetta di inserire i valori x e y. Come faccio poi ad inserirli nella lista p??? Devo fare un push oppure no??
  • Re: Lista c++ per gestire le coordinate di punti

    
        istream & operator >> (istream & in, Punto &a) {
                int x,y;
                cout << "Inserisci valore x: ";
                in >> x;
                cout << "Inserisci valore y: ";
                in >> y;
                a.push(x,y);
                return in;
            }
    
    
Devi accedere o registrarti per scrivere nel forum
3 risposte