[RISOLTO] [C++] Accesso a funzioni e liste
-
seven speed
- Scoppiettante Seguace

- Messaggi: 337
- Iscrizione: lunedì 4 novembre 2013, 10:15
- Desktop: Gnome3/Unity
- Distribuzione: Ubuntu 14.04 lts
[RISOLTO] [C++] Accesso a funzioni e liste
ciao ragazzi,sto facendo un programma in c++ per l'università,a dire il vero è il mio primo programma di c++ ed è abbastanza complicato(conosco abbastanza bene il c è sto facendo java,ma sono costretto a fare questo programma,purtroppo senza una preparazione adeguata).
prima di postarvi il codice chè davvero lungo(si parla di circa 700 righe di codice O.o ) voglio farmi una domanda,riguardo un problema diciamo concettuale,per vedere se riesco a risolvere da solo.l'errore che mi viene dato è "undefined reference to.....",da quanto ho capito vorrebbe dire che non riesce ad accedere alla funzione....in effetti io ho fatto questo programma ,cominciando a formare le class(che sono 3) e tenendo tutto in un progetto....potrebbe essere che non legge le classi e quindi le funzioni membro?devo importarle con una include?se si,quale sarebbe la sintassi corretta per includere le 3 classi?
prima di postarvi il codice chè davvero lungo(si parla di circa 700 righe di codice O.o ) voglio farmi una domanda,riguardo un problema diciamo concettuale,per vedere se riesco a risolvere da solo.l'errore che mi viene dato è "undefined reference to.....",da quanto ho capito vorrebbe dire che non riesce ad accedere alla funzione....in effetti io ho fatto questo programma ,cominciando a formare le class(che sono 3) e tenendo tutto in un progetto....potrebbe essere che non legge le classi e quindi le funzioni membro?devo importarle con una include?se si,quale sarebbe la sintassi corretta per includere le 3 classi?
Ultima modifica di seven speed il giovedì 22 maggio 2014, 3:27, modificato 4 volte in totale.
- vaeVictis
- Imperturbabile Insigne

- Messaggi: 4703
- Iscrizione: venerdì 27 luglio 2012, 17:58
- Desktop: Gnome
- Distribuzione: Ubuntu 20.04 64bit
Re: programma in c++,problemi
Maggio è il mese del controllo gratuito per le palle di vetro.
Posta il codice.
(che compili e/o riproduca l'errore, possibilmente)

Posta il codice.
(che compili e/o riproduca l'errore, possibilmente)
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
-
1001001
- Entusiasta Emergente

- Messaggi: 1506
- Iscrizione: mercoledì 22 dicembre 2010, 18:09
- Desktop: Unity
- Distribuzione: Ubuntu 14.04.1 LTS 64bit
- Località: Verona
Re: programma in c++,problemi
Infatti, anche io ho la sfera di cristallo dal gommista...
http://www.sscce.org/
Se proprio non vuoi postare il codice intero, almeno un minimal working example:seven speed [url=http://forum.ubuntu-it.org/viewtopic.php?p=4576370#p4576370][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto: [...] prima di postarvi il codice chè davvero lungo(si parla di circa 700 righe di codice O.o ) [...]
http://www.sscce.org/
"I find your lack of faith disturbing."
-
jigen45
- Scoppiettante Seguace

- Messaggi: 717
- Iscrizione: lunedì 31 dicembre 2012, 18:59
- Desktop: ubuntu
Re: programma in c++,problemi
tranquillo, non c'è bisogno di risparmiare, potresti postare tranquillamente il tuo codice 
-
seven speed
- Scoppiettante Seguace

- Messaggi: 337
- Iscrizione: lunedì 4 novembre 2013, 10:15
- Desktop: Gnome3/Unity
- Distribuzione: Ubuntu 14.04 lts
Re: programma in c++,problemi
vi posto la classe "incriminata"coi due metodi "incriminati".poi ci sarebbe un'atra classe con altri metodi su cui accade qualcosa di simile,ma diciamo che l'errore si ripete....
ovviamente c'è un main,che non fa altro che richiamare le funzioni delle classi e testarle su dei parametri a cui sono assegnati valori(serve solo per provare il programma).spero sia sufficiente a capire dove c'è l'errore
ovviamente c'è un main,che non fa altro che richiamare le funzioni delle classi e testarle su dei parametri a cui sono assegnati valori(serve solo per provare il programma).spero sia sufficiente a capire dove c'è l'errore
Codice: Seleziona tutto
#include <iostream>
#include <cmath>
#include <cstdlib>
#include <cstdio>
#include <cstring>
#define M 3
#define N 10
class input{
public:
int n;
double a[2];
double b[2];
double toll1;
//metodi
void proiezionepuntoretta (double xa, double ya, double xp, double yp, double h, double v, double *asc, double *ord, double *coord);
void ris(double xp, double yp,double xa, double ya,double h, double v, double hs, double vs, double*t, double*s);
input(double punto1[],double punto2[],double toll)
{
int i;
toll1=toll;
for(i=0;i<2;i++)
{
a[i]=punto1[i];
b[i]=punto2[i];
}
}
};
void input::ris(double xp, double yp,double xa, double ya,double h, double v, double hs, double vs, double *t, double*s)
{
/*h=xq-xp;
v=yq-yp;
hs=xb-xa;
vs=yb-ya;*/
*t=((yp-ya)*hs-vs*(xp-xa))/((h*vs-v*hs));
if(hs!=0)
*s=(xp-xa+(*t)*h)/hs;
else
*s=(yp-ya+(*t)*v)/vs;
return;
}
void input::proiezionepuntoretta (double xa, double ya, double xp, double yp, double h, double v, double *asc, double *ord, double *coord) {
/*h=vertice2[0]-vertice1[0];
v=vertice2[1]-vertice1[1];*/
void ris(double xp, double yp,double xa, double ya,double h, double v, double hs, double vs, double*t, double*s);
double s, hperp, vperp;
hperp=-v;
vperp=h;
ris(xp, yp, xa, ya, h, v, hperp, vperp, &(*coord), &s);
*asc=xa+s*hperp;
*ord=ya+s*vperp;
return;
}
Ultima modifica di seven speed il domenica 4 maggio 2014, 15:26, modificato 1 volta in totale.
-
1001001
- Entusiasta Emergente

- Messaggi: 1506
- Iscrizione: mercoledì 22 dicembre 2010, 18:09
- Desktop: Unity
- Distribuzione: Ubuntu 14.04.1 LTS 64bit
- Località: Verona
Re: programma in c++,problemi
Appunto...posta anche il main per favoreseven speed [url=http://forum.ubuntu-it.org/viewtopic.php?p=4576703#p4576703][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto: ovviamente c'è un main,che non fa altro che richiamare le funzioni delle classi e testarle su dei parametri a cui sono assegnati valori(serve solo per provare il programma)
"I find your lack of faith disturbing."
-
seven speed
- Scoppiettante Seguace

- Messaggi: 337
- Iscrizione: lunedì 4 novembre 2013, 10:15
- Desktop: Gnome3/Unity
- Distribuzione: Ubuntu 14.04 lts
Re: programma in c++,problemi
no scusa non c'è alcuna funzione risolvi,ma è solo la funzione ris 
nel main queste due funzioni non compaiono per niente.sono due funzioni accessorie,che bengono chiamate in una terza(che in realtà ne chiama anche altre)ed è quest'ultima ad esser eutilizzata nel main...
nel main queste due funzioni non compaiono per niente.sono due funzioni accessorie,che bengono chiamate in una terza(che in realtà ne chiama anche altre)ed è quest'ultima ad esser eutilizzata nel main...
-
1001001
- Entusiasta Emergente

- Messaggi: 1506
- Iscrizione: mercoledì 22 dicembre 2010, 18:09
- Desktop: Unity
- Distribuzione: Ubuntu 14.04.1 LTS 64bit
- Località: Verona
Re: programma in c++,problemi
seven speed [url=http://forum.ubuntu-it.org/viewtopic.php?p=4576703#p4576703][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:...vi posto la classe "incriminata"coi due metodi "incriminati"...
insisto che nessuno qui è chiaroveggente...seven speed ha scritto:...nel main queste due funzioni non compaiono per niente.sono due funzioni accessorie,che bengono chiamate in una terza(che in realtà ne chiama anche altre)ed è quest'ultima ad esser eutilizzata nel main...
"I find your lack of faith disturbing."
-
seven speed
- Scoppiettante Seguace

- Messaggi: 337
- Iscrizione: lunedì 4 novembre 2013, 10:15
- Desktop: Gnome3/Unity
- Distribuzione: Ubuntu 14.04 lts
Re: programma in c++,problemi
il programma è tutto questo,è davvero lungo..temo che se lo inserisco non lo leggerà nessuno...magari posso inviarmelo in pvt..
-
1001001
- Entusiasta Emergente

- Messaggi: 1506
- Iscrizione: mercoledì 22 dicembre 2010, 18:09
- Desktop: Unity
- Distribuzione: Ubuntu 14.04.1 LTS 64bit
- Località: Verona
Re: programma in c++,problemi
Premesso che, come da regolamento, lo scambio di messaggi privati per fornire aiuto è vietato, un paio di considerazioni (in ordine crescente di generalità):
1) che tu lo posti qua o me lo invii in privato, a me cosa cambia? Intendo, se lo voglio leggere lo leggo comunque, se non lo voglio leggere non lo leggo comunque
2) nel caso in cui io non lo voglia leggere o che più semplicemente con tutta la buona volontà del mondo io non sia in grado di aiutarti, se lo posti qua qualcun altro lo può vedere e darti una mano; se me lo invii in privato, non c'è speranza che altri utenti possano aiutarti
3)
4) chiaramente più il codice è minimale più è facile darti una mano ed è quindi nel tuo interesse ridurre il codice per creare un esempio minimale che riproduca il problema (vedi mio post sopra) e postare quello...ma se proprio non ci riesci, nessuno qui si spaventa per 700 righe di codice, credo...e non sono certo queste 700 righe di codice che saturano la memoria del server che ospita il forum
Morale: posta il codice
1) che tu lo posti qua o me lo invii in privato, a me cosa cambia? Intendo, se lo voglio leggere lo leggo comunque, se non lo voglio leggere non lo leggo comunque
2) nel caso in cui io non lo voglia leggere o che più semplicemente con tutta la buona volontà del mondo io non sia in grado di aiutarti, se lo posti qua qualcun altro lo può vedere e darti una mano; se me lo invii in privato, non c'è speranza che altri utenti possano aiutarti
3)
quello che è certo è che se non lo inserisci non lo leggerà nessunotemo che se lo inserisco non lo leggerà nessuno
4) chiaramente più il codice è minimale più è facile darti una mano ed è quindi nel tuo interesse ridurre il codice per creare un esempio minimale che riproduca il problema (vedi mio post sopra) e postare quello...ma se proprio non ci riesci, nessuno qui si spaventa per 700 righe di codice, credo...e non sono certo queste 700 righe di codice che saturano la memoria del server che ospita il forum
Morale: posta il codice
"I find your lack of faith disturbing."
-
jigen45
- Scoppiettante Seguace

- Messaggi: 717
- Iscrizione: lunedì 31 dicembre 2012, 18:59
- Desktop: ubuntu
Re: programma in c++,problemi
quoto1001001 [url=http://forum.ubuntu-it.org/viewtopic.php?p=4577284#p4577284][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Premesso che, come da regolamento, lo scambio di messaggi privati per fornire aiuto è vietato, un paio di considerazioni (in ordine crescente di generalità):
1) che tu lo posti qua o me lo invii in privato, a me cosa cambia? Intendo, se lo voglio leggere lo leggo comunque, se non lo voglio leggere non lo leggo comunque
2) nel caso in cui io non lo voglia leggere o che più semplicemente con tutta la buona volontà del mondo io non sia in grado di aiutarti, se lo posti qua qualcun altro lo può vedere e darti una mano; se me lo invii in privato, non c'è speranza che altri utenti possano aiutarti
3)quello che è certo è che se non lo inserisci non lo leggerà nessunotemo che se lo inserisco non lo leggerà nessuno
4) chiaramente più il codice è minimale più è facile darti una mano ed è quindi nel tuo interesse ridurre il codice per creare un esempio minimale che riproduca il problema (vedi mio post sopra) e postare quello...ma se proprio non ci riesci, nessuno qui si spaventa per 700 righe di codice, credo...e non sono certo queste 700 righe di codice che saturano la memoria del server che ospita il forum
Morale: posta il codice
- vaeVictis
- Imperturbabile Insigne

- Messaggi: 4703
- Iscrizione: venerdì 27 luglio 2012, 17:58
- Desktop: Gnome
- Distribuzione: Ubuntu 20.04 64bit
Re: programma in c++,problemi
Se nel frattempo ce la fai pure a mettere un titolo migliore, tanto di guadagnato.
A parte il linguaggio di programmazione, il titolo che hai scelto non indica niente di attinente con la discussione, a parte l'ovvietà che l'hai aperta per via di un problema.
p.s.:
In caso si sfori, si può usare un servizio di hosting online o qualcosa del genere.
A parte il linguaggio di programmazione, il titolo che hai scelto non indica niente di attinente con la discussione, a parte l'ovvietà che l'hai aperta per via di un problema.
p.s.:
C'è un limite al numero massimo di caratteri per un messaggio. Numero che non ricordo.nessuno qui si spaventa per 700 righe di codice, credo...e non sono certo queste 700 righe di codice che saturano la memoria del server che ospita il forum
In caso si sfori, si può usare un servizio di hosting online o qualcosa del genere.
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
-
seven speed
- Scoppiettante Seguace

- Messaggi: 337
- Iscrizione: lunedì 4 novembre 2013, 10:15
- Desktop: Gnome3/Unity
- Distribuzione: Ubuntu 14.04 lts
Re: programma in c++,problemi
eccolo
dopo qualche rivisitazione sono circa 500
Ultima modifica di seven speed il domenica 25 maggio 2014, 14:56, modificato 1 volta in totale.
Re: programma in c++,problemi
@seven speed: conviene scegliere un titolo piu' descrittivo del problema.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
-
1001001
- Entusiasta Emergente

- Messaggi: 1506
- Iscrizione: mercoledì 22 dicembre 2010, 18:09
- Desktop: Unity
- Distribuzione: Ubuntu 14.04.1 LTS 64bit
- Località: Verona
Re: programma in c++,accesso alle funzioni
Scusa la franchezza, ma secondo me questo codice è da rifare da zero 
I problemi principali che saltano all'occhio comunque sono:
1)
questa cosa nella tua mente cosa dovrebbe fare? Nella mia, io capisco che volevi dichiarare una variabile di nome polixseg e tipo list_el*. Ora, tralasciando il fatto che nello stesso codice hai dichiarato una funzione con lo stesso nome e lo stesso tipo di ritorno (obfuscated c code contest, anyone?
) e anche il fatto che usi una C-style struct in un codice C++ per dichiarare il tipo list_el (e soprattutto senza contare che il C++ mette a disposizione un tipo list), quella cosa non dichiara nessuna variabile, perché non c'è nessun costruttore di un oggetto di tipo list_el* che prenda in ingresso un oggetto di tipo input e uno di tipo poligono. Se invece volevi chiamare la funzione polixseg della classe poligono...non è così che si chiamano le funzioni in C++, e in particolare le funzioni (non statiche) membro di una classe
2) lo stesso vale per le istruzioni
all'inizio della funzione lista_el* poligono::polixseg(input in, poligono pol); ...cosa stai cercando di fare con quelle istruzioni?
3) (che si riaggancia al punto 1 e al tuo post di apertura del thread) tutti gli errori undefined reference to <...> sono dovuti a chiamate a funzioni che sono membri di una classe e che tu stai invece chiamando come fossero free-functions. Ad esempio (a parte le funzioni citate al punto 1 e 2):
Non puoi chiamare le funzioni isconvesso e in_lista così, le devi chiamare su un oggetto di tipo (rispettivamente) input e output
I problemi principali che saltano all'occhio comunque sono:
1)
Codice: Seleziona tutto
int main()
{
list_el *polixseg(input in, poligono pol);
[...]
2) lo stesso vale per le istruzioni
Codice: Seleziona tutto
void proiezionepuntoretta (double xa, double ya, double xp, double yp, double h, double v, double *asc, double *ord, double *coord);
double isconvesso (double p1[], double p2[], double p3[]);
int calcolaindicelatotriangolo(int iterazione);
double distanzapunti(double x1, double y1,double x2, double y2);
int in_lista(list_el **head, double asc, double ord, int posizione, char messaggio[]);
int cancella(list_el **head);
void risolvi(double xp, double yp,double xa, double ya,double h, double v, double hs, double vs, double*t, double*s);
3) (che si riaggancia al punto 1 e al tuo post di apertura del thread) tutti gli errori undefined reference to <...> sono dovuti a chiamate a funzioni che sono membri di una classe e che tu stai invece chiamando come fossero free-functions. Ad esempio (a parte le funzioni citate al punto 1 e 2):
Codice: Seleziona tutto
[....]
if(k!=i && k!=j)
{
if(isconvesso(dati[i], dati[j], dati[k])<=0)
{
error=1;
/*strcpy(mex,"poligono non convesso");
ret=in_lista(&head,xerr,yerr,indiceerr,mex);*/
ret=in_lista(&head,xerr,yerr,indiceerr,"poligono non convesso");/* ricontrollare xerr yerr etc.*/
[....]
"I find your lack of faith disturbing."
-
seven speed
- Scoppiettante Seguace

- Messaggi: 337
- Iscrizione: lunedì 4 novembre 2013, 10:15
- Desktop: Gnome3/Unity
- Distribuzione: Ubuntu 14.04 lts
Re: programma in c++,accesso alle funzioni
ho gia detto di sapere poco di c++. il cstyle dipende da questo,io so programmare in c e mi viene richiesto di fare un programma in c++ anche se le conoscenze non sono adeguate,quindi sicuramente non sfrutterò al massimo le sue potenzialità.si ho capito che le funzioni le devo chiamare su un oggetto e che da li viene la maggior parte degli errori.mi metto subito all'opera 
le istruzioni al tuo punto ") le ho eliminate,non servivano a nulla infatti.
nel punto 1) quella è una funzione che ritorna un puntatore a lista dichiarata con una struttura.(noin sapevo del fatto che c'è gia un tipo list in c++).cmq anche qui cambierò,il tipo di ritorno della funzione non sarà piu di tipo lista ma di tipo output(ingloberò li la lista).vediamo che riesco a combinare e vediamo che succede.
le istruzioni al tuo punto ") le ho eliminate,non servivano a nulla infatti.
nel punto 1) quella è una funzione che ritorna un puntatore a lista dichiarata con una struttura.(noin sapevo del fatto che c'è gia un tipo list in c++).cmq anche qui cambierò,il tipo di ritorno della funzione non sarà piu di tipo lista ma di tipo output(ingloberò li la lista).vediamo che riesco a combinare e vediamo che succede.
-
1001001
- Entusiasta Emergente

- Messaggi: 1506
- Iscrizione: mercoledì 22 dicembre 2010, 18:09
- Desktop: Unity
- Distribuzione: Ubuntu 14.04.1 LTS 64bit
- Località: Verona
Re: programma in c++,accesso alle funzioni
Se fossi in te onestamente prima cercherei di studiare un po' di C++ e programmazione a oggetti...
Intendiamoci, non voglio assolutamente suonare altezzoso, siamo stati tutti principianti e nessuno nasce Stroustroup, ci mancherebbe
dico solo che secondo me (ma forse è una deviazione dovuta alla mia formazione) il metodo trial and error va bene fino a un certo punto. Non so sinceramente quali siano le richieste del tuo professore riguardo a questo codice e se magari il tuo/suo obiettivo è: "basta che funzioni", ma se questo codice deve essere qualcosa di appena appena un po' più raffinato credo che varrebbe la pena considerare di investire un po' di tempo sulla teoria per poi buttare giù un codice più "consapevole"...questi sono i miei due cents
In ogni caso, per ogni problema batti un colpo, noi siamo qui!
Intendiamoci, non voglio assolutamente suonare altezzoso, siamo stati tutti principianti e nessuno nasce Stroustroup, ci mancherebbe
In ogni caso, per ogni problema batti un colpo, noi siamo qui!
"I find your lack of faith disturbing."
-
seven speed
- Scoppiettante Seguace

- Messaggi: 337
- Iscrizione: lunedì 4 novembre 2013, 10:15
- Desktop: Gnome3/Unity
- Distribuzione: Ubuntu 14.04 lts
Re: programma in c++,accesso alle funzioni
grazie davvero per il supporto e sto seguendo il tuo consiglio,ovvero cerco di studiare qualcosa di c++ un po meglio.mi interesserebbe sapere qualcosa di piu sull'esistenza del tipo list,sul web ho trovato molto poco,ma sarebbe fondamentale per il mio programma..
Re: programma in c++,accesso alle funzioni
Dovresti seguire anche il mio "consiglio".
Modifica il titolo con uno più pertinente.
Modifica il titolo con uno più pertinente.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
-
seven speed
- Scoppiettante Seguace

- Messaggi: 337
- Iscrizione: lunedì 4 novembre 2013, 10:15
- Desktop: Gnome3/Unity
- Distribuzione: Ubuntu 14.04 lts
Re: programma in c++,accesso alle funzioni e gestione lista
spero che vada bene,non riesco a trovarne uno migliore..
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 2 ospiti
