|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: May 2006
Messaggi: 13
|
[C] valutatore di espressioni
Ciao a tutti ragazzi.
Ci sarebbe qualcuno che mi illustrerebbe come realizzare una funzione C che, presi in input una stringa rappresentante una funzione matematica ed un valore numerico, restituisca il valore della funzione matematica per quel valore numerico? Per farmi capire... Se la funzione avrà forma: Codice:
double Calcola(char *stringa, double x)
{
.......
.......
}
Codice:
Calcola("3*x + x^2", 2);
L'esempio che ho fatto è semplice, ma il valutatore di espressioni che mi occorre dovrebbe funzionare con le 4 operazioni di base (+, -, *, /) e almeno le seguenti altre: sin, cos, log, sqrt, e ^. Ho però il vantaggio che so a priori che sarà chiamato sempre su funzioni con una singola incognita di nome x. Qualcosa ho trovato in rete ma non riesco ad adattare niente di quello che ho trovato alle mie esigenze, ovvero realizzare la singola funzione con i due parametri char * e double. Help me, please!
Ultima modifica di fastmagister : 04-12-2007 alle 10:52. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2787
|
Personalmente sostituirei la x con il valore passato e poi racchiuderei tra parentesi le varie operazioni secondo l'ordine in cui andrebbero eseguite, quindi se ho 2+3*4 diventa (2+(3*4)) e poi svolgerei tutte le parentesi, a partire dalle + interne naturalmente, sostituendole con il valore risultante, quindi la precedente operazione diventa 2+3*4 -> (2+(3*4)) -> (2+12) -> 14
E' una soluzione molto casereccia, probabilmente si può fare di meglio... |
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: May 2006
Messaggi: 13
|
Si l'avevo pensato anch'io, ma avrei bisogno di qualcosa che non mi obbligasse ad inserire l'input con tutte quelle parentesi....
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2787
|
Io non intendevo inserire l'input con le parentesi, le devi mettere tu.
|
|
|
|
|
|
#5 |
|
Junior Member
Iscritto dal: May 2006
Messaggi: 13
|
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2787
|
Ti ha accorciato il link e non funziona.. Comunque sono contento che hai risolto.
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 03:20.



















