[code=c] char cedula[11], c;
Reservás 11 lugares pero usás 10.
for(i=0;i<9;i++) {
----------------------------
char cedula[11], c;
Declarás un "char *". Pero a scanf() le pasás un "char **". Sacále el "&".
----------------------------
atoi() toma un "const char *" pero le pasás un "char". Cambialo por "atoi(cedula)".
----------------------------
digito10 = suma%10;
if (suma%10==0)
digito10=0;
Esta comparación es redundante, fijáte.
----------------------------
if (digito10 = n[10])
¿No habrá querido ser una comparación eso? "=="
----------------------------
PD: fijáte si podés usar [*code=c] [/code] para postear código, sino no se entiende un pomo jeje.
Edit:Me quedó así... ¿Cómo era la idea original de tu programa? O sea la manera en que tenía que validar...
void validacion() {
int i, digito10, suma, n[10], pares=0, impares=0, mul;
char cedula[10], c;
bool valid=true; /* #include <stdbool.h> */
for(i=0;i<9;i++) {
c = cedula[i];
else {
printf("numero de cedula incorrecto\n"); valid = false;
break;
}
}
if(valid) {
for(i=0; i<9; i++) {
if (n[i]%2 == 0) {
mul = 0;
mul = n[i]*2;
if (mul>9)
mul = mul-9;
pares = pares+mul;
} else
impares = impares+n[i];
}
suma = impares+pares;
digito10 = suma%10;
if (digito10 == n[9])
printf("\n\n\n Numero de cedula valida"); else {
printf("\n\n\n Numero de cedula NO valida "); printf("\n\n %d = %d\n",digito10
,n
[9]); }
}
}