estoy empezando en C y tengo un problema con este código en C de la uni. Creo que está bien codificado, pero no consigo resolver el tema de la variable booleana. Creo que según la versión de C admite o no y hay que definirla con typedef enun {TRUE, FALSE} boolean, pero no consigo hacerlo, ruego me ayudéis. Ahora ya me funciona el programa después de algunos pormenores, pero cuando lo subo a la uni el corrector me da un fallo por el tema del boolean
In function 'checkCIF':
30: error: 'bool' undeclared (first use in this function)
30: error: (Each undeclared identifier is reported only once
30: error: for each function it appears in.)
30: error: expected ';' before 'bOk'
63: error: 'bOk' undeclared (first use in this function)
Gracias por la ayuda.
Código:
#include <stdio.h> const int PAR_EVEN = 1; const int PAR_ODD = 2; //typedef enum {TRUE, FALSE} boolean; void checkCIF(void); void getCIFControl(int number, int *retControlNumber, char *retControlChar); int addsUp2Digits(int n); int addsUpDigitsParam(int n, int param); int main(void) { checkCIF(); return 0; } void checkCIF() /*Declaració de constants*/ { const char CONTROL_NUMBER = 'N'; char firstChar, whiteSpace, typeControl; /*Declaració de variables*/ int number; int controlNumber, retControlNumber; char controlChar, retControlChar; bool bOk; printf("Introduïu la lletra inicial (a-z)\n"); /*Introducció de valors*/ scanf("%c", &firstChar); getchar(); printf("Introduïu el número de control (7 cifres)\n"); scanf("%d", &number); getchar(); printf("Introduïu un espai en blanc\n"); //Pot ser whiteSpace = ' '; scanf("%c", &whiteSpace); getchar(); printf("Introduïu N si número o C si caràcter al dígit de control\n"); scanf("%c", &typeControl); getchar(); if(typeControl == CONTROL_NUMBER) { printf("Introduïu el número del dígit de control\n"); scanf("%d", &controlNumber); getchar(); printf("El CIF és: %c%d%c%c %d\n",firstChar,number,whiteSpace,typeControl,controlNumber); }else{ printf("Introduïu el caràcter del dígit de control\n"); scanf("%c", &controlChar); getchar(); printf("El CIF és: %c%d%c%c %c\n",firstChar,number,whiteSpace,typeControl,controlChar); } getCIFControl(number, *retControlNumber, *retControlChar); if(typeControl==CONTROL_NUMBER) { bOk = (controlNumber==retControlNumber); }else{ bOk = (controlChar==retControlChar); } if(bOk) { printf("%c",'O'); printf("%c",'k'); }else{ printf("%c",'k'); printf("%c",'O'); } } void getCIFControl(int number, int *retControlNumber, char *retControlChar) { int sumEven, sumOdd, total; sumEven = addsUpDigitsParam(number, PAR_EVEN); sumOdd = addsUpDigitsParam(number, PAR_ODD); total = ((sumEven + sumOdd)%10); total = 10 - total; *retControlChar = (char)(64 + total); if(total == 10) { *retControlNumber = 0; }else{ *retControlNumber = total; } } int addsUp2Digits(int n) { return ((n/10)+(n%10)); } int addsUpDigitsParam(int n, int param) { int d, sum, i; i = 1; d = (n%10); sum = 0; while(n!=0) { if(param==PAR_EVEN) { if(i%2==0) { sum = sum + d; } }else{ if(i%2!=0) { d = 2 * d; if(d>9) { d = addsUp2Digits(d); } sum = sum + d; } } n = n/10; d = n%10; i = i + 1; } return sum; }