Booleano in c

Mrhaha
Ragazzi c'è un esercizio riguardo la programmazione in c che mi rende perplesso.
So che in C non esiste il tipo booleano, l'esercizio mi chiedeva una matrice di booleani,io ho considerato la matrice fatta da interi e nel caso in cui ci fosse lo zero l'ho considerata come il carattere "falso","vero" negli altri casi.
Che ne pensate?

Risposte
apatriarca
Ci sono diversi metodi possibili di diversa complessità. Trattandosi di un esercizio utilizzerei o quello da te descritto oppure utilizzare una enumerazione come la seguente
enum Bool { False, True };
typedef enum Bool Bool;

e fare una matrice di Bool.

Mrhaha
Quella sarebbe stata una soluzione ideale,perfetta! Ma questo mi conviene metterlo prima o dopo il programma!?

apatriarca
Prima di usarlo... Normalmente all'inizio del file sorgente, dopo l'inclusione delle librerie.

menale1
Come soluzione non sarebbe andata bene anche una semplice struttura di interi in cui , convenzionalmente , poni 0 come False e ciò che è diverso da 0 come True ?? :-D :-D :-D

apatriarca
Quella era la soluzione adottata da Mrhaha all'inizio della discussione.

Mrhaha
Scusami,ma "enum" per cosa starebbe?

menale1
Chiedo venia :-D Ma quella da te fatta è una definizione di un nuovo tipo , giusto ?? :-D

apatriarca
Una enumerazione è un tipo che può assumere solo alcuni valori particolari. Nell'esempio precedente, creando una variabile di tipo Bool, le si può assegnare solo True o False. Una enumerazione viene implementata assegnando delle costanti che partono da zero ad ogni valore. Per cui False == 0 e True == 1. Queste costanti si possono assegnare anche in fase di definizione della enumerazione, per esempio nella seguente struttura (il typedef serve per poter scrivere Settimana al posto di enum Settimana quando si crea una variabile con questo tipo).
enum Giorno {INIZIO_SETTIMANA = 0, LUNEDI = INIZIO_SETTIMANA, MARTEDI, MERCOLEDI, GIOVEDI, VENERDI, SABATO, DOMENICA, FINE_SETTIMANA};
typedef enum Giorno Giorno;

In C, ma non in C++, le enumerazioni possono essere trattate come interi. È cioè possibile usare operazioni come la somma per passare da un valore ad un altro. Per esempio, con l'enumerazione precedente è possibile fare un ciclo per ogni giorno della settimana:
Giorno g;
for (g = INIZIO_SETTIMANA; g < FINE_SETTIMANA; ++g) {
    /* Fai qualcosa per questo giorno della settimana.. */
} 

Per maggiori informazioni andate a dare un occhiata al vostro manuale del C.

menale1
Caspita , giuro che non sapevo di questa enumerazione . Utilissima nel nostro caso ! :-D Grazie del consiglio !

Mrhaha
Infatti! Non pensavo esistesse una cosa del genere! Ti ringrazio!

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.