Problemi con la funzione elevamento a potenza

di il
23 risposte

Problemi con la funzione elevamento a potenza

Salve a tutti ho problemi con la funzione pow. ho scritto i#include <math.h> ma non riconosce la funzione pow.
Come editor e compilatore uso Geany.
Il programma viene compilato correttamente ma quando faccio build mi dà questi errori:

"
gcc -Wall -o "radpolinomio" "radpolinomio.c" (nella cartella: /home/cinzia/programmini C)
radpolinomio.c:9:2: warning: return type defaults to ‘int’ [-Wimplicit-int]
main()
^
/tmp/ccYc3c1x.o: nella funzione "main":
radpolinomio.c:(.text+0xb1): riferimento non definito a "pow"
collect2: error: ld returned 1 exit status
Compilazione fallita.
"
scusate sono alle prime armi, sto imparando da un manuale.

23 Risposte

  • Re: Problemi con la funzione elevamento a potenza

    Dovresti postare il tuo codice qui sul forum . Comunque dovrebbe essere un errore di sintassi.
  • Re: Problemi con la funzione elevamento a potenza

    
    #include <stdio.h>
    #include <math.h>
    #define TRUE 1
    #define FALSE 0
    
     int flag = TRUE,count=0;
     double root,test,guess, error;
    
    	main()
    {  
    	printf("initial guess:");
    	scanf(" %f ", &guess);
    	
    	 while (flag ){
    		++count;
    		if (count == 50 )flag = FALSE ;
    		test= 100 - 3 * guess * guess; 
    		if (test > 0 ) {
    			root = ;
    			printf(" \n iteration number: %.2d",count);
    			printf("x= %7.5f",root);
    			error= fabs(root - guess);
    			
    			if (error >  0.00001) guess=root;
    			else {
    				flag=FALSE;
    				printf("\n\n the root is %7.5f  ", root);}
    			}
    			else {
    				flag=FALSE;
    				printf("\n number out of range- try an other inital guess");
    				printf("number of iteration %d \n", count);}}
    			
    			if((count==50) && (error>0.001)) printf("convergence not obtained after 50 iterations");
    			
    	
    
    }	
    	
    	
    
  • Re: Problemi con la funzione elevamento a potenza

    Prova a levare :
    #define TRUE 1
    #define FALSE 0
  • Re: Problemi con la funzione elevamento a potenza

    Scusa dopo root originaraimente c' era:
    root= pow(test,0.2)
  • Re: Problemi con la funzione elevamento a potenza

    L'ho levato, in effetti era inutile. adesso l' ho messo così :
    #include <stdio.h>
    #include <math.h>
    
     
    	main()
    {  int flag = 1, count=0;
     float root,test,guess, error;
    
    	printf("initial guess:");
    	scanf(" %f ", &guess);
    	
    	 while (flag!= 0 ){
    		++count;
    		if (count == 50 )flag = 0 ;
    		test= 100. - 3. * guess * guess; 
    		if (test > 0 ) {
    			root = pow(test,0.2);
    			printf(" \n iteration number: %.2d",count);
    			printf("x= %7.5f",root);
    			error= fabs(root - guess);
    			
    			if (error >  0.00001) guess=root;
    			else {
    				flag=0;
    				printf("\n\n the root is %7.5f  ", root);}
    			}
    			else {
    				flag=0;
    				printf("\n number out of range- try an other inital guess");
    				printf("number of iteration %d \n", count);}}
    			
    			if((count==50) && (error>0.001)) printf("convergence not obtained after 50 iterations");
    			
    ma gli errori durante la costruzione sono sempre gli stessi (cioè quelli del primo post), identici parola per parola.
  • Re: Problemi con la funzione elevamento a potenza

    Allora metti
    int main ()
  • Re: Problemi con la funzione elevamento a potenza

    Ok, comunque quando scrivo " pow" non appare come suggerimento il nome della funzione, come invece succede con altre funzioni della libreria math.h , per questo penso che non la riconosca come comando..non potrebbe essere? in ogni caso ho messo
     int main 
    come mi hai detto tu.
  • Re: Problemi con la funzione elevamento a potenza

    lacindy91 ha scritto:


    ok, comunque quando scrivo " pow" non appare come suggerimento il nome della funzione, come invece succede con altre funzioni della libreria math.h , per questo penso che non la riconosca come comando..non potrebbe essere?
    Usa Visual Studio C++ express 2012 o 2016 che è meglio secondo me . Comunque mancano anche le parentesi graffe alla fine 2 e più.
  • Re: Problemi con la funzione elevamento a potenza

    Usa lo switch -lm durante la compilazione
  • Re: Problemi con la funzione elevamento a potenza

        #include <stdio.h>
    #include <math.h>
    
     
    int  main()
    {  
    int flag = 1, count=0;
    float root,test,guess, error;
    
       printf("initial guess:");
       scanf(" %f ", &guess);
       
        while (flag!= 0 )
        {
          ++count;
          if (count == 50 )
          {
          flag = 0 ;
          test= 100. - 3. * guess * guess;
          } 
          if (test > 0 ) {
             root = pow(test,0.2);
             printf(" \n iteration number: %.2d",count);
             printf("x= %7.5f",root);
             error= fabs(root - guess);
             }
             if (error >  0.00001) 
             {
             guess=root;
             }
             if(error <= 0.00001) {
                flag=0;
                printf("\n\n the root is %7.5f  ", root);
                printf("\n number out of range- try an other inital guess");
                printf("number of iteration %d \n", count);
                }
             
             if((count==50) && (error>0.001)) 
             {
             printf("convergence not obtained after 50 iterations");
             }
             }
             }
    
  • Re: Problemi con la funzione elevamento a potenza

    Ho compilato ed eseguito il tuo codice testé riportato e l' errore è sempre lo stesso:
    "gcc -Wall -o "senza nome1" "senza nome1.c" (nella cartella: /home/cinzia/programmini C)
    /tmp/cczh3jie.o: nella funzione "main":
    senza nome1.c:(.text+0xb7): riferimento non definito a "pow"
    collect2: error: ld returned 1 exit status
    Compilazione fallita.
    "
  • Re: Problemi con la funzione elevamento a potenza

    Inserisci nei flag di compilazione
    -lm
    http://stackoverflow.com/questions/16344445/undefined-reference-to-pow-even-with-math-h-and-the-library-link-lm
  • Re: Problemi con la funzione elevamento a potenza

    Usa lo switch -lm durante la compilazione

    dove lo devo mettere -lm di preciso, in mezzo al codice?
    grazie mille
  • Re: Problemi con la funzione elevamento a potenza

    Nel comando di compilazione

    gcc .... -lm
Devi accedere o registrarti per scrivere nel forum
23 risposte