Conversione stringa
Ciao a tutti. Qualcuno di voi saprebbe dirmi perchè questo pezzo di codice scritto per la conversione di una stringa in un numero mi da errore dove c'è la scritta
Grazie a tutti!!!!
bool sign=false;
#include <stdio.h> #include <float.h> #include <math.h> #include <time.h> #define BIN double s2f(char*s){ /*dichiaro la funzione in grado di convertire la stringa in numero*/ static double etens [9]={10.0, 100.0, 10000.0, 100000000.0, 10e16, 10e32, 10e64, 10e128, 10e256}; bool sign = false;/*sto inizializzando il segno del mio numero*/ double r=0; double mult=1.0;
Grazie a tutti!!!!
Risposte
Ragazzi ho risolto il problema. Probabilmente il compilatore dev c++ non accetta la dichiarazione con bool, allora ho scritto
e me lo compila correttamente.
int sign=0
e me lo compila correttamente.
Per una volta non è colpa di Dev-C++... Il tipo bool non è presente in C *, ma solo in C++. Se il tuo professore ti ha insegnato diversamente allora è lui in errore.
* C'è in realtà un tipo booleano nello standard del 99. Ma questo standard non è mai stato realmente accettato e usato. Dovresti però in tal caso includere stdbool.h per poter usare bool, true e false al posto di _Bool, 1 e 0.
* C'è in realtà un tipo booleano nello standard del 99. Ma questo standard non è mai stato realmente accettato e usato. Dovresti però in tal caso includere stdbool.h per poter usare bool, true e false al posto di _Bool, 1 e 0.
Allora adesso includo subito quella libreria bool, anche se ho provato a inserire direttamente il codice fatto dal professore e non andava bene. Infatti nemmeno lui ha inserito stdbool.h!!!Grazie mille!!!
Come ho detto lo standard del 99 non è molto usato o accettato e sono tantissimi i compilatori che non lo supportano ancora adesso dopo più di 10 anni (e il compilatore incluso in Dev-C++ è molto datato e non credo abbia un supporto anche solo discreto). È in realtà molto semplice implementare un tipo booleano usando una enumerazione come in
ma il più delle volte puoi semplicemente farne a meno usando al suo posto un tipo intero. Un'altra soluzione un po' poco ortodossa (che probabilmente usa il tuo professore) è quella di rinominare il file in modo che abbia l'estensione ".cpp" e dovrebbe magicamente compilare senza problemi (il C++ è per la maggior parte compatibile con il C e supporta i bool per cui il tuo codice dovrebbe compilare senza problemi se compilato come codice in C++).
enum Bool {FALSE = 0, TRUE = 1}; typedef enum Bool Bool;
ma il più delle volte puoi semplicemente farne a meno usando al suo posto un tipo intero. Un'altra soluzione un po' poco ortodossa (che probabilmente usa il tuo professore) è quella di rinominare il file in modo che abbia l'estensione ".cpp" e dovrebbe magicamente compilare senza problemi (il C++ è per la maggior parte compatibile con il C e supporta i bool per cui il tuo codice dovrebbe compilare senza problemi se compilato come codice in C++).