View Full Version : 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:
#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;
}
Ciao :)
L'errore credo sia nel %d che e' x i valori interi e non per i double...credo ci andrebbe %e
Originariamente inviato da Cimmo
L'errore credo sia nel %d che e' x i valori interi e non per i double...credo ci andrebbe %e
Sostituendo %d con %e da valori errati :(
Originariamente inviato da OrizoN
Sostituendo %d con %e da valori errati :(
hai sostituito sia nei scanf che nei printf? Che errore ti da'? Sii piu' preciso!
maxithron
13-10-2003, 00:58
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.
Originariamente inviato da maxithron
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.
Ma la pow funzia anche con i double, perche' non dovrebbe andare bene mettendo %e e tenendo i double?
maxithron
13-10-2003, 01:07
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;
}
maxithron
13-10-2003, 01:14
Se invece compili da Linux, devi aggiungere al comando di compilazione l'opzione -lm
maxithron
13-10-2003, 01:24
A proposito Orizon....Benvenuto!
Oh! Finalmente qualcuno che dà il benvenuto a chi scrive per la prima volta...;). Ho visto, anche in altre sezioni del forum, che questa pratica è tutt'altro che seguita :(.
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.
:)
Gogeta ss4
13-10-2003, 19:26
Se le variabili sono double non puoi acquisire con %d.
Al massimo, sostituisci Double con Float e al posto di %d metti %f ;)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.