PDA

Visualizza la versione completa : calcolo dell'esponente


fenics
02-04-2014, 11:13
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??


#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;
}

oregon
02-04-2014, 11:50
Anche con

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

?

fenics
02-04-2014, 12:40
si

vbextreme
02-04-2014, 13:06
anche senza usare la scanf?

fenics
02-04-2014, 13:25
beh si, anzi mi da una serie di numeri negativi senza lo scanf

oregon
02-04-2014, 14:02
Scusa ma che compilatore usi? Ho provato con Visual C++ e non ci sono problemi.

fenics
03-04-2014, 16:40
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.


#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;
}

oregon
03-04-2014, 17:45
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.

fenics
04-04-2014, 10:10
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....

Loading