Algoritmo validação do cpf
Consegui chegar a uma solução, não sei se ainda quer saber como....
Mas tem alguns erros na sua lógica, primeiro nao pode utilizar funcao, pois ela retorna um valor, o que não queremos, o que tem que utilizar é um PROCEDIMENTO, e quando você utiliza o passo para armazenar o CPF, está errado, primeiro você tem que separar os dígitos para que os multiplique e some os resultados.
Outra coisa, você está dividindo por 11 e por 10, não é o que queremos, o que precisa ser feito é MOD 11 MOD 10 ou seja pegar somente o resto da divisao.
Quando você declara a variável real, ela tem que ser inteira caso contrário nao funcionará a separacao dos digitos.
Abaixo o algoritmo que desenvolvi. Implementei também opcoes de SE para conferir o digito e gerar digito de CPF e AGencia e Conta do BRADESCO E Banco do Brasil. algoritmo "DIGITO CPF E CC E AGENCIA BB E BRADESC" // Função : Gerar e Validar Digito de CPF, Agencia e Conta do Bradesco e Banco do Brasil // Autor : Felipe Sander // Data : 25/12/2012 // Seção de Declarações var opcao, s,digito1,digito2,i,cpf2,digit,dcpf1,dcpf2,dg1,dg2 : inteiro repete: caractere procedimento validacpf (cpf: inteiro) var separanum: vetor [1..11] de inteiro //vetor para variaveis do CPF // separanum2: vetor [1..10] de inteiro // //vetor para variaveis do CPF // // talvez nao precise dependendo do que eu fizer agora multinum: vetor [1..11] de inteiro //vetor para variaveis do CPF separanum2: vetor [1..11] de inteiro // vetor para variaveis do segundo digito do CPF rd1, rd2, d1, d2, soma1, soma2: inteiro // variaveis para armazenar informações do CPF inicio