ilfe98
Utente Èlite
- Messaggi
- 3,083
- Reazioni
- 1,317
- Punteggio
- 134
salve a tutti ho un esercizio che non riesco in alcun modo a risolvere.
Creare i file operazione.h e operazione.c che consentano di utilizzare la seguente funzione:
la funzione accetta come unico parametro una stringa C contenente un’operazione aritmetica di somma, sottrazione, moltiplicazione o divisione. Il formato in cui vengono scritte le operazioni è fisso: in cui gli spazi e il simbolo dell’operazione occupano sempre un solo carattere. Quelli che seguono sono esempi di possibili stringhe:
"4.56 + 255.3"
"-3.55e-3 - -6.59"
"-5.73e2 * 8.448"
"11.34e-3 / -2.5554"
".23e7 - -99.76"
"11.34e-3 * -2.5554"
La funzione deve effettuare il parsing della stringa che le viene passata e restituire il risultato in un double. La stringa passata come parametro non sarà mai NULL e sarà sempre nel formato indicato.
Identificare l'operatore binario non è difficile,il problema è che non so affatto come copiare il contenuto del puntatore in un unica variabile per poter fare l'operazione e ritornare double ris.
Potreste aiutarmi per favore?
Ho estratto l'operatore cosi
Ah non è un esercizio di scuola, mi serve per prepararmi all'esame
Creare i file operazione.h e operazione.c che consentano di utilizzare la seguente funzione:
C:
extern double parse_operazione(const char *s);
"4.56 + 255.3"
"-3.55e-3 - -6.59"
"-5.73e2 * 8.448"
"11.34e-3 / -2.5554"
".23e7 - -99.76"
"11.34e-3 * -2.5554"
La funzione deve effettuare il parsing della stringa che le viene passata e restituire il risultato in un double. La stringa passata come parametro non sarà mai NULL e sarà sempre nel formato indicato.
Identificare l'operatore binario non è difficile,il problema è che non so affatto come copiare il contenuto del puntatore in un unica variabile per poter fare l'operazione e ritornare double ris.
Potreste aiutarmi per favore?
Ho estratto l'operatore cosi
C:
#include"prse_operazione.h"
double parse_operazione(const char *s){
char c = 0;
for (size_t = 0; s[i + 1] != 0; i++) {
if (isspace(s[i]) && ispunct(s[i + 1])
{
c = s[i + 1];
break;
}
}
}
switch (c) {
//qui ci mettero tutti i case ovvero "/ * + -"
}
}
Ultima modifica: