Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    152

    [c++] Restituzione array di oggetti

    Salve a tutti!

    Ho un problema con il codice seguente che mi dovrebbe restituire, dati 4 vertici(x,y) , semplicemente 2 punti (minx, miny) ; (maxx, maxy)

    [I]Polygon::Polygon(int a)
    {
    num = a;
    Points = new Point[num]; //la classe Point definisce x e y di un
    punto
    }



    Point *Polygon::getOutbox()
    {
    Point *r[2];
    r[0] = new Point(Points[0].x,Points[0].y);
    r[1] = new Point(Points[0].x,Points[0].y);

    for (int i=0;i<num;i++)
    {
    Point *p = new Point(Points[i].x,Points.y);

    if (p->x < r[0]->x) r[0]->x = p->x;
    if (p->x > r[1]->x) r[1]->x = p->x;
    if (p->y < r[0]->y) r[0]->y = p->y;
    if (p->y > r[1]->y) r[1]->y = p->y;

    cout << r[0]->x << r[0]->y << endl;
    cout << r[1]->x << r[1]->y << endl;

    delete p;
    }
    return r[0];
    }



    Dal main faccio eseguire il calcolo:

    [I]main()
    {
    Polygon *plyP = new Polygon(4);
    plyP->Points[0] = (Point)* new Point(1,1);
    plyP->Points[1] = (Point)* new Point(2,5);
    plyP->Points[2] = (Point)* new Point(7,3);
    plyP->Points[3] = (Point)* new Point(5,1);

    Point *pob;
    pob = plyP->getOutbox();
    for (int i=0;i<2;i++) cout << pob[i].x << " " << pob.y << endl;
    }


    ed il risultato è:

    11
    11
    25
    11
    75
    11
    75


    1 1 // QUESTO RUSULTATO E' CORRETTO
    3.50325e-44 7 // QUESTO NO - DOVREBBE ESSERE l'ULTIMA COPPIA CIOE'
    (7 5)

    Penso che se mi da correttamente i valori calcolati nel for cioè

    11
    11
    25
    11
    75
    11
    75

    l'errore sia nella restituzione return *r ma non riesco a capire dove!!


    Ringrazio chiunque voglia darmi una mano!!
    andry80

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    152
    Ho dimenticato di mostrare l' header file di Polygon:

    class Polygon{

    public:

    int num;
    Point *Points;

    Polygon();
    Polygon(int a);

    Point *getOutbox();
    };
    andry80

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    423
    Hai fatto un pò di casino coi puntatori e gli array. Versione riveduta e corretta:
    codice:
    Point *Polygon::getOutbox() 
    { 
        Point *r; 
        r = new Point[2];
        r[0] = Point(Points[0].x,Points[0].y); 
        r[1] = Point(Points[0].x,Points[0].y); 
    
        for (int i=0;i<num;i++) 
        { 
            Point p(Points[i].x,Points[i].y); 
    
            if (p.x < r[0].x) r[0].x = p.x; 
            if (p.x > r[1].x) r[1].x = p.x; 
            if (p.y < r[0].y) r[0].y = p.y; 
            if (p.y > r[1].y) r[1].y = p.y; 
    
            cout << r[0].x << r[0].y << endl; 
            cout << r[1].x << r[1].y << endl; 
        } 
        return r; 
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.