Sto cercando di analizzare equazioni come quelle qui sotto, che hanno solo due valori o la radice quadrata di un certo valore, da un file di testo:
100+100
-100-100
-(100)+(-100)
sqrt(100)
tra i segni meno, tra parentesi e il simbolo dell'operatore nel mezzo e la radice quadrata, e non ho idea di come iniziare ... Ho fatto la parte del file e le semplici parti di calcolo tranne che non potevo ottenere il mio programma per risolvere le equazioni di cui sopra.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
main(){
FILE *fp;
char buff[255], sym,sym2,del1,del2,del3,del4;
double num1, num2;
int ret;
fp = fopen("input.txt","r");
while(fgets(buff,sizeof(buff),fp)!=NULL){
char *tok = buff;
sscanf(tok,"%lf%c%lf",&num1,&sym,&num2);
switch(sym){
case '+': printf("%lf\n", num1+num2);
break;
case '-': printf("%lf\n", num1-num2);
break;
case '*': printf("%lf\n", num1*num2);
break;
case '/': printf("%lf\n", num1/num2);
break;
default: printf("The input value is not correct\n");
break;
}
}
fclose(fp);
}
Questo è ciò che ho scritto per le altre operazioni di base senza parentesi e il segno meno per il secondo valore e funziona benissimo per le semplici. Sto usando un'istruzione switch per calcolare le operazioni add, sub, mul e div, ma non sono sicuro di come usare correttamente la funzione sscanf
(se non la sto usando correttamente) o se c'è un altro modo, come usare una funzione come strtok
per analizzare correttamente le parentesi e i segni meno. Qualsiasi tipo di aiuto?