08/11/2010, 16:17
|
| | Fecha de Ingreso: noviembre-2010
Mensajes: 2
Antigüedad: 14 años Puntos: 0 | |
Respuesta: Ayuda con programa SOLUCIONADO Hola a todos,
ya he corregido los errores y todo OK. Pongo el código correcto.
Bueno, el puñetero corrector online de la uni me daba error porque faltaba un getchar() que es un System("PAUSE"); en Windows.
Un saludo.
Código:
#include <stdio.h>
const int PAR_EVEN = 1;
const int PAR_ODD = 2;
typedef enum {true, false} bool;
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()
{
const char CONTROL_NUMBER = 'N';
char firstChar, whiteSpace, typeControl;
int number;
int controlNumber, retControlNumber;
char controlChar, retControlChar;
bool bOk = true;
scanf("%c", &firstChar);
scanf("%d", &number);
scanf("%c", &whiteSpace);
scanf("%c", &typeControl);
getchar();
if(typeControl == CONTROL_NUMBER)
{
scanf("%d", &controlNumber);
}
else
{
scanf("%c", &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;
}
|