Visualizzazione dei risultati da 1 a 9 su 9

Discussione: calcolo dell'esponente

  1. #1
    Utente di HTML.it L'avatar di fenics
    Registrato dal
    Aug 2004
    Messaggi
    446

    calcolo dell'esponente

    Ciao di nuovo a tutti rag. Mi sapreste spiegare questo fatto al quanto anomalo??
    Il programma mi calcola correttamente l'esponente, ma c' è un problema con il numero 5, nel senso che se io digito per esempio 5 alla 3 o 5 alla 2 o qualsiasi altro numero con base 5, mi da un numero in meno. es 24, oppure 124...

    Come mai??
    codice:
    #include<stdio.h>
    #include<math.h>
    
    
    int num(int x, int y)
    {
        return pow(x,y);
    }
    int main(void)
    {
        int a, b, e;
        scanf("%d %d", &a, &b);
    
        e=num(a,b);
        printf("%d", e);
    
        return 0;
    }

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

    return pow((double)x, (double)y);

    ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3

  4. #4
    anche senza usare la scanf?

  5. #5
    Utente di HTML.it L'avatar di fenics
    Registrato dal
    Aug 2004
    Messaggi
    446
    beh si, anzi mi da una serie di numeri negativi senza lo scanf

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Scusa ma che compilatore usi? Ho provato con Visual C++ e non ci sono problemi.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it L'avatar di fenics
    Registrato dal
    Aug 2004
    Messaggi
    446
    uso code blocks, cmnq ho risolto cambindo l'istruzione return pow(x,y) con p*=b, in pratica così. Soloe che potrei far a meno del math all'inizio.
    codice:
    #include<stdio.h>
    #include<math.h>
    
    int num(int b, int e)
    {
        int i, p;
    
        p=1;
    
        for(i=1; i<=e; i++)
            p*=b;
    
        return p;
    }
    int main(void)
    {
        int j, k, n;
        printf("scrivi la base e l'esponente\n");
        scanf("%d %d", &j, &n);
        k=num(j,n);
        printf("%d", k);
    
        return 0;
    }

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Non è che hai risolto ma aggirato il problema.

    pow di math.h è una funzione che calcola la potenza di valori reali non solo interi (esempio 2 elevato a 1/2).

    Anche pow funziona a patto di utilizzare correttamente i valori double.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it L'avatar di fenics
    Registrato dal
    Aug 2004
    Messaggi
    446
    si infatti mi correggo. Ho provato ance io con visual studio, e il problema è su codeblocks effettivamente tantop che anche ai miei compagni da lo stesso errore, e pure al professore....

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.