Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    Problema funzione pow [c]

    Buon giorno a tutti.
    Quando compilo il mio programma, sul terminale mi esce scritto

    codice:
    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

    codice:
    #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;

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ma dove sta la pow nel tuo codice?

    Hai incluso il file math.h ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    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

    codice:
    #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

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Questa

    c=c|pow(2,h);

    scrivila così

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




    P.S. La variabile mask non esiste ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Ora mi ha cambiato l'errore:

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

    in che senso mask non esiste???

  6. #6
    Originariamente inviato da ancestral
    Ora mi ha cambiato l'errore:

    codice:
    (.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.
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    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

  8. #8
    Utente bannato
    Registrato dal
    Apr 2012
    Messaggi
    510
    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
    E invece cosa vorresti che facesse?

  9. #9
    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.

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    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?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.