Bug sulla funzione della potenza in C

di il
6 risposte

Bug sulla funzione della potenza in C

Ciao ragazzi,ho fatto una calcolatrice in C con somma,sottrazione,moltiplicazione,divisione,radice quadrata e potenza,in quest'ultima ho riscontrato un problema,vi faccio un'esempio :

#include <stdio.h>

int main()
{
    int Numero;
    int Esponente;
    int Potenza;
    
    printf("Inserire il numero da elevare : ");
    scanf("%d", &Numero);
    printf("Inserire l'esponente del numero : ");
    scanf("%d", &Esponente);
    
    Potenza = pow(Numero,Esponente);
    
    printf("Risultato : %d", Potenza);
    
    system("pause>null");
    return 0;
}
La funzione della potenza è "pow" ed eleva il numero per l'esponente ( nel caso delle nostre variabili ).....ma se inserite come numero 5 o tutti i suoi multipli e poi come esponente qualsiasi numero come il risultato sarà minore di quello vero....se noi inseriamo 5 e poi 2 per il programma 5^2=24 mentre invece è uguale a 25,la stessa cosa con tutti i multipli,sapete il perché?

6 Risposte

  • Re: Bug sulla funzione della potenza in C

    Non è un bug, sei tu che non la conosci bene questa funzione pow.
    La funzione pow accetta come membri una base float e un esponente float. Se tu li dichiari interi puoi incorrere in errori, come in questo caso, che alcuni compilatori non segnalano.
  • Re: Bug sulla funzione della potenza in C

    luigibana96 ha scritto:


    Non è un bug, sei tu che non la conosci bene questa funzione pow.
    La funzione pow accetta come membri una base float e un esponente float. Se tu li dichiari interi puoi incorrere in errori, come in questo caso, che alcuni compilatori non segnalano.
    Ho provato a risolvere il problema la questa stessa funzione ma non ho concluso nulla....c'è una funzione uguale per i numeri interi?
  • Re: Bug sulla funzione della potenza in C

    #include <stdio.h>
    int main()
    {
        float Numero;
        float Esponente;
        float Potenza;
        
        printf("Inserire il numero da elevare : ");
        scanf("%f", &Numero);
        printf("Inserire l'esponente del numero : ");
        scanf("%f", &Esponente);
        
        Potenza = pow(Numero,Esponente);
        
        printf("Risultato : %f", Potenza);
    
        return 0;
    }
  • Re: Bug sulla funzione della potenza in C

    luigibana96 ha scritto:


    #include <stdio.h>
    int main()
    {
        float Numero;
        float Esponente;
        float Potenza;
        
        printf("Inserire il numero da elevare : ");
        scanf("%f", &Numero);
        printf("Inserire l'esponente del numero : ");
        scanf("%f", &Esponente);
        
        Potenza = pow(Numero,Esponente);
        
        printf("Risultato : %f", Potenza);
    
        return 0;
    }
    è corretto ma senza il system pause appena si apre il programma si chiude subito....
  • Re: Bug sulla funzione della potenza in C

    Wolt ha scritto:


    senza il system pause appena si apre il programma si chiude subito....
    Questo è normale, non c'entra nulla la pow e la spiegazione sta nel fatto che il programma viene eseguito in una shell che il sistema operativo crea per eseguire il programma e distrugge quando questo termina.
  • Re: Bug sulla funzione della potenza in C

    oregon ha scritto:


    Wolt ha scritto:


    senza il system pause appena si apre il programma si chiude subito....
    Questo è normale, non c'entra nulla la pow e la spiegazione sta nel fatto che il programma viene eseguito in una shell che il sistema operativo crea per eseguire il programma e distrugge quando questo termina.
    Non importa.....l'importante è che mi ha aiutato
Devi accedere o registrarti per scrivere nel forum
6 risposte