|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Oct 2003
Città: Palermo
Messaggi: 9
|
problema con semplice prog c:
Salve a tutti,
colgo l'occasione per presentarmi, sono un nuovo utente di questo forum, fattomi conoscere da alcuni miei amici. Ho iniziato da pochissimo a studiare programmazzione da auto-didatta, e la mia scelta è ricaduta sul linguaggio c. Ho realizzato questo semplicissimo programmino per elevare a y un numero scelto x. Ma c'e qualche errore in quanto non mi visualizza il valore corretto (penso che l'errore sia legato al tipo di variabile che ho usato ma non ne sono sicuro). Ecco il codice: Codice:
#include <stdio.h>
#include <math.h>
main()
{
double x, y, z;
printf("Inserisci numero che vuoi elevare a potenza\n");
scanf("%d", &x);
printf("A quanto vuoi elevare %d ?\n", x);
scanf("%d", &y);
z = pow (x, y);
printf("%d", z);
printf("Premi un tasto per continuare...");
getchar();
return 0;
}
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jan 2001
Città: California
Messaggi: 7174
|
L'errore credo sia nel %d che e' x i valori interi e non per i double...credo ci andrebbe %e
__________________
Il mio case prima della "cura" --> Il mio case...dopo! .oO (Firefox Myths) Myths Oo. |
|
|
|
|
|
#3 | |
|
Junior Member
Iscritto dal: Oct 2003
Città: Palermo
Messaggi: 9
|
Quote:
__________________
"Per ogni sistema formale di regole ed assiomi è possibile arrivare a proposizioni indecidibili, usando gli assiomi dello stesso sistema formale" Kurt Godel |
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Jan 2001
Città: California
Messaggi: 7174
|
Quote:
__________________
Il mio case prima della "cura" --> Il mio case...dopo! .oO (Firefox Myths) Myths Oo. |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Mar 2002
Città: Italy/Usa
Messaggi: 2817
|
Il codice può essere migliorato. Mi attengo a quello che hai scritto tu:
#include <stdio.h> #include <math.h> main() { int x, y, z; printf("Inserisci numero che vuoi elevare a potenza\n"); scanf("%d", &x); printf("A quanto vuoi elevare?\n", x); scanf("%d", &y); z = pow (double x, double y); printf("%d", z); printf("\nPremi un tasto per continuare..."); getchar(); return 0; } Hai ragione a pensare di non aver utilizzato correttamente le variabili. In questo caso, le tue variabili sono degli interi(%d) per cui, se le dichiari double, mentre cerchi ad esempio di elevare 2^2, non potrà restituirti il valore corretto.
__________________
"Utilizzando atomi pentavalenti drogheremo il silicio di tipo n; Utilizzando atomi trivalenti drogheremo il silicio di tipo p; Utilizzando della cannabis ci drogheremo noi e vedremo il silicio fare cose impossibili" - DSDT-HowTo |
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Jan 2001
Città: California
Messaggi: 7174
|
Quote:
__________________
Il mio case prima della "cura" --> Il mio case...dopo! .oO (Firefox Myths) Myths Oo. |
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Mar 2002
Città: Italy/Usa
Messaggi: 2817
|
Infatti ma devi scrivere così:
#include <stdio.h> #include <math.h> main() { double x, y, z; printf("Inserisci numero che vuoi elevare a potenza\n"); scanf("%e", &x); printf("A quanto vuoi elevare?\n", x); scanf("%e", &y); z = pow (double x, double y); printf("%e", z); printf("\nPremi un tasto per continuare..."); getchar(); return 0; }
__________________
"Utilizzando atomi pentavalenti drogheremo il silicio di tipo n; Utilizzando atomi trivalenti drogheremo il silicio di tipo p; Utilizzando della cannabis ci drogheremo noi e vedremo il silicio fare cose impossibili" - DSDT-HowTo Ultima modifica di maxithron : 13-10-2003 alle 01:10. |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Mar 2002
Città: Italy/Usa
Messaggi: 2817
|
Se invece compili da Linux, devi aggiungere al comando di compilazione l'opzione -lm
__________________
"Utilizzando atomi pentavalenti drogheremo il silicio di tipo n; Utilizzando atomi trivalenti drogheremo il silicio di tipo p; Utilizzando della cannabis ci drogheremo noi e vedremo il silicio fare cose impossibili" - DSDT-HowTo |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Mar 2002
Città: Italy/Usa
Messaggi: 2817
|
A proposito Orizon....Benvenuto!
__________________
"Utilizzando atomi pentavalenti drogheremo il silicio di tipo n; Utilizzando atomi trivalenti drogheremo il silicio di tipo p; Utilizzando della cannabis ci drogheremo noi e vedremo il silicio fare cose impossibili" - DSDT-HowTo |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Nov 2001
Messaggi: 1205
|
Oh! Finalmente qualcuno che dà il benvenuto a chi scrive per la prima volta...
Per OrizoN...anche se ormai ti hanno già aiutato a risolvere. se dichiari delle variabili di tipo double: double x, y, z; quando vuoi registrarvi dei valori utilizzando scanf, devi usare l'opzione %lf (percento elle effe): è come se il dato fosse long (la elle) e float (la effe), cioè un double (in genere 8 byte --> 64 bit, mentre il semplice float occupa 4 byte --> 32 bit). quindi, subito dopo la printf, il tuo scanf sarà così: scanf("%lf", &x); Idem per la le altre variabili. |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: May 2001
Città: Milano
Messaggi: 3197
|
Se le variabili sono double non puoi acquisire con %d.
Al massimo, sostituisci Double con Float e al posto di %d metti %f |
|
|
|
|
|
#12 |
|
Junior Member
Iscritto dal: Oct 2003
Città: Palermo
Messaggi: 9
|
Grazie dell'aiuto!
__________________
"Per ogni sistema formale di regole ed assiomi è possibile arrivare a proposizioni indecidibili, usando gli assiomi dello stesso sistema formale" Kurt Godel |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:20.



















