Forum Informatica Unict

LAUREA TRIENNALE (D.M. 270/04) => LAP 1: programmazione C/C++ 6 CFU => Topic started by: Giovi89 on 29-11-2011, 20:45:14



Title: Problema esercizio
Post by: Giovi89 on 29-11-2011, 20:45:14
Salve ragazzi, volevo sapere dove sbaglio nel seguente codice?

poligono.h
Code:
#ifndef POLIGONO_H
#define POLIGONO_H

class poligono {
public:
    poligono(int lato);
    int lato;
    int perimetro(int lato );
   void informazioni();
 
};

#endif /* POLIGONO_H */

poligono.cpp
Code:
#include "poligono.h"
#include <stdlib.h>

poligono::poligono(int lato ) {
    lato=5;
}

int poligono::perimetro(int lato)
{
    return lato;
}
void poligono::informazioni()
{
    printf("%d",lato);
}


main.cpp
Code:
#include "poligono.h"
#include <cstdlib>
#include <stdio.h>

using namespace std;

int main(int argc, char** argv) {

    poligono p(5);
    p.perimetro(5);
   
    return 0;
}

Il problema del progetto è che non appena effettuo il build quest'ultimo non va a buon fine. Non riesco a capire il motivo in quanto il compilatore non mi dà altri errori. Illuminatemi.  .ciaociao


Title: Re:Problema esercizio
Post by: dontomas86 on 29-11-2011, 23:19:01
beh, nel main non vedo:
1- dove dichiari il poligono
poligono *a= new poligono(5);

2- hai due metodi che ti ritornano int ma li chiami senza nulla...
int c;
c=p->perimetro(5)

poi c'è un errore concettuale:
hai messo che il costruttore prende un parametro che poi non usa perché inizializzi il lato a 5, qualunque sia il parametro che passi

comunque di base c'è un codice seppur molto breve ma confuso!
non prenderla come offesa, ma cerco di farti notare gli errori


Title: Re:Problema esercizio
Post by: Giovi89 on 30-11-2011, 15:02:29
Ciao, grazie delle correzioni ora provo se funziona. Comunque ho voluto scrivere questo  spezzone di codice per cominciare a capire come funzione l'ereditarietà in c++ però mi ero imbattuto in questo problema e non potevo andare avanti.  .ciaociao


Title: Re:Problema esercizio
Post by: Giovi89 on 30-11-2011, 18:23:44
Ho provato a fare le modifiche che mi hai consigliato però mi da un errore strano:

Code:
Undefined symbols:
  "ContatoreDoppio::ContatoreDoppio(int)", referenced from:
      _main in main.o
  "Contatore::Contatore(int)", referenced from:
      _main in main.o
  "Contatore::incrementaContatore()", referenced from:
      _main in main.o
  "Contatore::getValoreContatore()", referenced from:
      _main in main.o
      _main in main.o
      _main in main.o
      _main in main.o
  "ContatoreDoppio::incrementaContatore()", referenced from:
      _main in main.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make[2]: *** [dist/Debug/GNU-MacOSX/contatore] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2

BUILD FAILED (exit value 2, total time: 118ms)

ho provato a cercarlo però non ho trovato nessuna soluzione, potreste dirmi come risolverlo?  .ciaociao


Title: Re:Problema esercizio
Post by: dontomas86 on 01-12-2011, 12:34:24
posta il codice...


Title: Re:Problema esercizio
Post by: Giovi89 on 02-12-2011, 10:58:24
Ciao l'errore che avevo postato è relativo a un altro progetto ora ti posto l'errore relativo al codice scritto sopra dove ho apportato le modifiche che mi hai fatto notare:

Code:
Undefined symbols:
  "persona::getnome()", referenced from:
      _main in main.o
  "persona::geteta()", referenced from:
      _main in main.o
  "persona::getcognome()", referenced from:
      _main in main.o
  "persona::persona(int)", referenced from:
      _main in main.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make[2]: *** [dist/Debug/GNU-MacOSX/persona] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2

BUILD FAILED (exit value 2, total time: 297ms)

parte cambiata:
main.cpp
Code:
#include "poligono.h"
#include <cstdlib>
#include <stdio.h>

using namespace std;

/*
 *
 */
int main(int argc, char** argv) {

    poligono *p = new poligono(5);
    int c;
    c = p->perimetro(8);
    p->informazioni();
   
   
    return 0;
}


Title: Re:Problema esercizio
Post by: havoc on 02-12-2011, 14:28:14
a cosa serve using namespace std?


Title: Re:Problema esercizio
Post by: Giovi89 on 02-12-2011, 16:43:21
ciao, quello non serve a nulla. Me lo ha creato netbeans....cmq mi da sempre il solito errore... .ciaociao


Title: Re:Problema esercizio
Post by: Daréios89 on 02-12-2011, 16:58:19
ciao, quello non serve a nulla. Me lo ha creato netbeans....cmq mi da sempre il solito errore... .ciaociao

No no serve  .sisi
Ora non ricordo dove ma se non includessi quella istruzione ad alcune funzioni(mi sembra quelle di input) dovresti sempre anteporre un' istruzione tipo ::std