PDA

Visualizza la versione completa : [C] Errore: called object pow is not a function


ancestral
08-05-2012, 16:26
Buon giorno a tutti.
Quando compilo il mio programma, sul terminale mi esce scritto


error: called object pow is not a function

Cosa vuol dire e come lo risolvo???

Questo il mio programma che gestisce l'accensione e spegnimento di 8 lampadine


#include <stdio.h>
main ()
{
char c;
int z, n, j, i;
char mask;
//c=0b0000;
i=0;
c=0;
do
{
printf("inserisci 1 se vuoi accendere, 0 se vuoi spegnere, 2 se vuoi visualizzare \n");
scanf("%d", &z);
if (z==1)
{
mask=1;
printf("inserisci il numero della lampadina che vuoi accendere \n");
scanf("%d", &n);
mask=mask<<(n-1);
c=c|mask;
if (c==0)
{
printf("La lampadina gia accesa \n");
}
else
{
printf(" Hai acceso la lampadina \n");
}
}
else
{
if (z==0)
{
mask=0;
printf("inserisci il numero della lampadina che vuoi spegnere \n");
scanf("%d", &n);
mask=mask<<(n-1);
c=c&mask;
if (c!=0)
{
printf("La lampadina gia spenta \n");
}
else
{
printf("Hai spento la lampadina \n");
}
}
else
{
mask=0;
for(j=1;j<9;j++)
{
mask=mask<<(j-1);
c=c&mask;
if (c==1)
{
printf("1");
}
else
{
printf("0");
}
}
}
}
printf(" Digita 0 se vuoi ripetere l'esecuzione, altrimenti digita 1 \n");
scanf("%d", &i);
}
while (i==0);
}
//char x=0xff;
//char x=01011111b;

oregon
08-05-2012, 16:50
Ma dove sta la pow nel tuo codice?

Hai incluso il file math.h ?

ancestral
08-05-2012, 16:54
Originariamente inviato da oregon
Ma dove sta la pow nel tuo codice?

Hai incluso il file math.h ?

Oh mamma, scusami, ma da oggi alle 10 che ci sono sopra e non capisco pi nulla.
il codice questo



#include <stdio.h>
#include <math.h>
main ()
{
char c;
int z;
int n;
int j;
int i;
int h;
c=c & 0 ;
i=0;
h=0;
//printf("%d \n", c);
do
{
printf("inserisci 1 se vuoi accendere, 0 se vuoi spegnere, 2 se vuoi visualizzare \n");
scanf("%d", &z);
if (z==1)
{
mask=1;
printf("inserisci il numero della lampadina che vuoi accendere \n");
scanf("%d", &n);
mask=mask<<(n-1);
h=n-1;
c=c|pow(2,h);
if (c==0)
{
printf("La lampadina gia accesa \n");
}
else
{
printf(" Hai acceso la lampadina \n");
}
}
else
{
if (z==0)
{
mask=0;
printf("inserisci il numero della lampadina che vuoi spegnere \n");
scanf("%d", &n);
mask=mask<<(n-1);
c=c&mask;
if (c!=0)
{
printf("La lampadina gia spenta \n");
}
else
{
printf("Hai spento la lampadina \n");
}
}
else
{
mask=0;
for(j=1;j<9;j++)
{
mask=mask<<(j-1);
c=c&mask;
if (c==1)
{
printf("1");
}
else
{
printf("0");
}
}
}
}
printf(" \n");
printf("Digita 0 se vuoi ripetere l'esecuzione, altrimenti digita 1 \n");
scanf("%d", &i);
}
while (i==0);
}
//char x=0xff;
//char x=01011111b;


sisi, come puoi notare, math.h incluso

oregon
08-05-2012, 17:24
Questa

c=c|pow(2,h);

scrivila cos

c=c | (int)pow(2.0, h);




P.S. La variabile mask non esiste ...

ancestral
08-05-2012, 17:28
Ora mi ha cambiato l'errore:



(.text+0x35): undefined reference to `pow'
collect2: ld returned 1 exit status


ancora non funziona... uffa...

in che senso mask non esiste???

MItaly
08-05-2012, 18:29
Originariamente inviato da ancestral
Ora mi ha cambiato l'errore:



(.text+0x35): undefined reference to `pow'
collect2: ld returned 1 exit status


ancora non funziona... uffa...
Devi linkare la libreria matematica; aggiungi alla linea di comando di gcc lo switch -lm.


in che senso mask non esiste???
Nel senso che non dichiarata n definita, per cui non esiste.

ancestral
08-05-2012, 18:33
Grazie del consiglio, infatti ora funziona.
Per il programma non funziona, nel senso che si avvia, mi inizializza a 0 c poi accendo la lampadina 1 e c mi viene 11111111 ..... non ci capisco pi nulla :dh:

Who am I
08-05-2012, 22:20
Originariamente inviato da ancestral
Grazie del consiglio, infatti ora funziona.
Per il programma non funziona, nel senso che si avvia, mi inizializza a 0 c poi accendo la lampadina 1 e c mi viene 11111111 ..... non ci capisco pi nulla :dh:

E invece cosa vorresti che facesse?

ancestral
08-05-2012, 22:25
Originariamente inviato da Who am I
E invece cosa vorresti che facesse?

vorrei che l'utente scegli il numero della lampadina da accendere e la accende, lo stesso con lo spegnimento e poi con la visualizzazione fa vedere lo stato delle otto lampadine. nel caso in cui la lampadina selezionata fosse gia accesa o gia spenta, dovrebbe uscire errore.

oregon
08-05-2012, 23:09
Devi eliminare quelle

mask=0;

altrimenti cancelli lo stato delle lampadine.

Ripeto ... la variabile mask non definita n dichiarata all'inizio ... Non hai problemi di compilazione?

Loading