Você pode fazer um loop, e multiplicar por um valor relativo a i.
Lembrando que o CPF virá em forma de string (ou seja: char []
), então deve-se subtrair o caractere em questão do caractere "0" para se obter o numeral.
As posições da string se dão da seguinte forma:
int soma = 0;
for (i = 0; i < 10; i++) {
# Pequeno hack: nas posicoes [3-5], deve-se somar um ao indice da string, para se livrar do hifen
soma += (cpf[i + (i / 3)] - '0') * (10 - i);
}
int dv = (soma * 10) % 11;
if (dv == (cpf[12] - '0')) {
printf("O CPF %s e valido!", cpf);
} else {
printf("O CPF %s e invalido!", cpf);
return;
}
dv = soma + cpf[12];
dv = (dv * 10) % 11;
if (dv == (cpf[12] - '0')) {
printf("O CPF %s e valido!", cpf);
} else {
printf("O CPF %s e invalido!", cpf);
return;
}