View Full Version : [C] Quesito
Ciao a tutti! :)
Devo modificare un programmino. Quando fa dei operazioni logiche ad esempio a||b può dare 0 se è falso o 1 se è vero. Io dovrei modificarlo in modo tale che mi dia V se è vero e F se è falso (senza far uso degli enumeratori). Come posso fare? Grazie.
jappilas
25-06-2005, 13:26
ma... che io sappia un punto esclamativo ( come in ( !(condizione) ) inverte il risultato del test su <condizione> ... ;)
Scusa e che c'entra con quello che voglio fare io? Io voglio sostituire il carattere "F" a 0 e il carattere "V" a 1.
Ciao a tutti! :)
Devo modificare un programmino. Quando fa dei operazioni logiche ad esempio a||b può dare 0 se è falso o 1 se è vero. Io dovrei modificarlo in modo tale che mi dia V se è vero e F se è falso (senza far uso degli enumeratori). Come posso fare? Grazie. V ed F cosa sono, variabili/costanti numeriche? caratteri char? macro?
Scusa e che c'entra con quello che voglio fare io? Io voglio sostituire il carattere "F" a 0 e il carattere "V" a 1. ok, allora non si può. devi per forza convertire manualmente: char c;
bool f = a || b;
if (f) {
c = 'V';
}
else {
c = 'F';
}
oppure (forma più semplice): char c = (a || b) ? 'V' : 'F';
jappilas
25-06-2005, 13:35
scusa sti giorni sono davvero stordito... avevo capito lo scopo fosse la negazione del test (F al posto di 1, V al posto dello 0) ... -_-'
Scusa e che c'entra con quello che voglio fare io? Io voglio sostituire il carattere "F" a 0 e il carattere "V" a 1.
in quel caso... ehm... sostituirei i test con semplici funzioni con un char in ritorno... :stordita:
oppure (forma più semplice): char c = (a || b) ? 'V' : 'F';
ed anche più ottimizzata se non sbaglio ;)
repne scasb
25-06-2005, 14:27
c=('V'-'F')*(a||b)+'F';
Si puo' fare di meglio pero'...
Ok grazie. Senza che apro un altro post non riesco a capire ora quest'altro problema. Devo praticamente creare una funzione che calcoli l'n-esima potenza di x quindi io ho fatto così:
double power(double x, double n){
int i;
double power=1.0;
for(i=1; i<n; i++)
power*=x;
return power;
}
Perché il valore di power che ritorna la funzione è sempre 1? :cry:
repne scasb
25-06-2005, 18:22
double x,n,power; /* power = 'x' elevato alla 'n' */
power=exp(n*log(x));
double x,n,power; /* power = 'x' elevato alla 'n' */
power=exp(n*log(x));
scusa, qui non sarebbe meglio usare pow? :confused:
calcolare una potenza non è più semplice per la cpu che calcolare prima un logaritmo e poi e elevato al risultato?
perchè fare l'esponente del logaritmo?
c'è la funzione pow (nb bisogno dichiarare la libreria math.h)
pow (base, esponente);
repne scasb
25-06-2005, 18:58
scusa, qui non sarebbe meglio usare pow? :confused:
calcolare una potenza non è più semplice per la cpu che calcolare prima un logaritmo e poi e elevato al risultato?
1) Non e' stata specificata alcun tipo di CPU.
2) Nel caso di CPU di cleasse x86 con FPU di classe x87, e' necessario ricordare la tale FPU non dispone di un'istruzione assembly di elevamento a potenza, ma dell'istruzione: FYL2X (ossia Y* Log in base 2 di X), percui il compilato di "pow" su FPU di classe x87, e' "sostanzialmente" quanto da me scritto poco sopra.
repne scasb
25-06-2005, 19:03
perchè fare l'esponente del logaritmo?
1) Perche' permette di capire come funziona l'elevamento a potenza.
2) Perche' e' in "generale" piu' veloce della funzione pow.
Fenomeno85
25-06-2005, 19:14
1) Perche' permette di capire come funziona l'elevamento a potenza.
2) Perche' e' in "generale" piu' veloce della funzione pow.
ecco che esce con le sue perle di saggezza :D ci mancavi
~§~ Sempre E Solo Lei ~§~
repne scasb bentornata era tanto tempo che non li leggevo +.
mi sei mancata è bello sapere che ci sei
ciao
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.