Torna indietro   Hardware Upgrade Forum > Software > Programmazione

MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro
MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro
Wireless 2.4 GHz, Bluetooth 5.4, cancellazione attiva del rumore, design pieghevole e un'autonomia che mette in imbarazzo prodotti che costano il doppio. Le Maestro 500 non eccellono in nulla, ma offrono tutto. E a questo prezzo è difficile chiedere di più
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine
Dopo anni di attesa e una lunga fase di sviluppo, Noctua entra nel mercato dei dissipatori a liquido AIO con la nuova serie NL-LC1. Forte dell'esperienza maturata nel raffreddamento ad aria, l'azienda austriaca promette di portare la propria filosofia fatta di qualità costruttiva, attenzione ai dettagli e silenziosità anche in questo segmento. Abbiamo provato il nuovo sistema per scoprire se riesce a distinguersi in un mercato ormai molto competitivo.
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super
Arrivato sul mercato italiano a fine marzo, la serie Boox Go 10.3 (Gen II) offre Android 15, penna da 4096 livelli e retroilluminazione opzionale (nel modello da noi provato, Lumi, presente). La serie si compone di due tablet ePaper che fanno da e-reader, blocco note digitale e persino browser, tutto a un prezzo che fa dimenticare i prodotti di brand più blasonati
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 17-04-2010, 14:16   #1
El_SiF
Member
 
Iscritto dal: Sep 2004
Messaggi: 87
[C++] Funzioni Matematiche

Salve Ragazzi,
avrei l'esigenza di predisporre una box dove l'utente possa inserire una sua equazione del tipo:
Codice:
e^x + (4/25)*sqrt(5*x)
Dovrei dunque predisporre del codice che mi calcoli i valori di y (la funzione immessa) al variare di x (il passo lo posso scegliere io e non costituisce un problema).

Avete idee di come implementare un semplice parser che riconosca le funzioni immesse dall'utente (notasi che non posso conoscere a priori l'ordine degli operatori)? Non ho esigenza di "parsare" integrali, derivate o roba del genere.. al più esponenziali, radici (meglio se si potesse specificare anche l'indice della radice), pi-greco (o costanti di vario genere) ecc...

Non ho problemi ad utilizzare librerie esterne, non devo necessariamente scrivere io il codice, avevo dunque pensato a QtScript (magari creando un engine) o le RegExp (magari anche QRegExp).

Avete suggerimenti?


Aggiornamento: forse potrebbe anche andare questo: http://muparser.sourceforge.net

Ultima modifica di El_SiF : 17-04-2010 alle 14:25.
El_SiF è offline   Rispondi citando il messaggio o parte di esso
Old 17-04-2010, 18:44   #2
:.Blizzard.:
Senior Member
 
L'Avatar di :.Blizzard.:
 
Iscritto dal: Jan 2006
Città: Perugia - San Benedetto del Tronto
Messaggi: 348
Potresti trasformare la funzione immessa dall'utente dalla notazione infissa alla notazione postfissa (conosciuta come RPN). Così facendo risolvi il problema di non dover tener conto dell'ordine degli operandi. Dopodiché basta iterare il valore di x e sostituirlo all'interno dello Stack risultante contenente la notazione polacca inversa e risolvi tranquillamente l'espressione.

Link:
http://en.wikipedia.org/wiki/Reverse_Polish_Notation
http://en.wikipedia.org/wiki/Shunting-yard_algorithm


Questa è la soluzione che ho utilizzato io in un programma che ho scritto in Java che doveva lavorare con delle funzioni immesse dall'utente (e anche disegnarle ... ma questa è un'altra storia ).

Per il discorso Parser cerca di controllare, sicuramente in C++ esisterà qualche libreria a riguardo. La parte più complessa però è quella di gestire la funzione data in input.

Se non ti è chiaro qualcosa chiedi pure


ps vedo che è comunque un problema che capita di affrontare a molte persone ... magari prima o poi proverò a scrivere una piccola guida a riguardo.
:.Blizzard.: è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


MSI Maestro 500 Wireless: ANC e 90 ore di autonomia a 70 euro MSI Maestro 500 Wireless: ANC e 90 ore di autono...
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine NL-LC1 è il primo dissipatore a liquido A...
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con ...
Gigabyte MO32U24 OLED: il 4K a 240Hz su un pannello OLED ideale per il gaming Gigabyte MO32U24 OLED: il 4K a 240Hz su un panne...
Recensione realme 16 5G: lo smartphone con Selfie Mirror ha una batteria da 6550mAh Recensione realme 16 5G: lo smartphone con Selfi...
Gwynne Shotwell (presidente di SpaceX): ...
ISRO lancerà il primo modulo della stazi...
Lo sfondo animato del tuo PC potrebbe es...
Dopo la RAM, Framework annuncia l'aument...
Google Home Speaker ufficiale: è il prim...
Spotify: i nomi utente stanno per divent...
Il limite vero dei data center AI sono g...
AMD conferma i nuovi Threadripper: Zen 6...
Stop all'ADSL per WindTre: continua la m...
HPE punta sull'IA agentica e dichiara gu...
macOS avvisa quando si incolla un comand...
Everpure ridisegna lo storage per l’IA: ...
NVIDIA RTX Remix 1.5: realizzare remaste...
Come configurare Windows 11 like a pro, ...
Windows 11 cambia finalmente la gestione...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 01:07.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v