Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2016
    Messaggi
    16

    [C] Trasformare una stringa in una equazione

    Ciao a tutti
    Visto che non ho trovato una sezione per presentarmi colgo l'occasione di presentarmi qui. Mi chiamo Lorenzo e sono un appassionato di Informatica. Possiedo le basi di quasi tutti i linguaggi di programmazione più diffusi.
    Ho aperto questa discussione perché vorrei sapere se è possibile in C o anche C++ trasformare un "qualcosa" (non so se posso definirla una stringa acquisita con scanf()) inserito dall'utente in una equazione matematica con incognita x, nella quale poi successivamente posso andare a sostituire dei valori. Per esempio l'utente inserisce "x/ln(x)" e il programma mi trasforma quello che ha inserito l'utente in funzione e poi posso richiamarla passandogli valori. Lo so che detta cosi sembra risolvibile solo con la magia, ma è la prima volta che mi capita questo problema e non ho abbastanza conoscenze per affrontarlo da solo.
    Spero di essere stato chiaro e di aver seguito tutti i punti del regolamento.
    Grazie a tutti !

  2. #2
    Nulla di magico, devi scrivere un parser di espressioni matematiche; normalmente i parser a discesa ricorsiva sono i più semplici da implementare, trovi un sacco di documentazione in proposito su Internet.

    Qui un po' di giocattoli che avevo scritto in C++; il più semplice è l'EvaluatingParser, che valuta l'espressione mentre la parsa; poi ho scritto un ASTParser, che parsa un'espressione trasformandola in un albero sintattico (eventualmente valutabile con l'ASTEvaluatore), e un ASTCompiler che compila l'AST in un bytecode eseguito da una piccola macchina virtuale ad-hoc, che consente di valutare ripetutamente l'espressione (al variare delle variabili) in maniera molto più efficiente piuttosto che ri-parsandola tutte le volte.
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.