
08/11/2010, 14:41
|
| | Fecha de Ingreso: noviembre-2010
Mensajes: 2
Antigüedad: 14 años, 4 meses Puntos: 0 | |
Ayuda con programa Hola a todos,
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;
}
Última edición por ecaful2000; 08/11/2010 a las 15:10 |