Veja onde que está errado.
Questão A
Program A ;varn,x,p:integer;s:real;Procedure calculo;varf,u:integer;p:real;beginf:=1;for u:=1 to x dobeginf:=f*uend;p:=1+1/f;s:=p+s;end;BeginWriteln('Informe o número');readln(n);for x:=1 to n dobegincalculo;end;writeln('O Resultado será ',s);Writeln('Pressione qualquer tecla para finalizar');readkey;End.
Questão B:
Program B ;varx,numero:integer;Procedure calculo;vary,np,nc:integer;begin np:=0; nc:=numero-1; for y:=1 to nc do begin If (numero mod y=0) thennp:=y+np;end;if (numero=np) thenwriteln('O numero ',numero,' é perfeito')elsewriteln('O numero ',numero,' não é perfeito');end;BeginWriteln('Esse programa irá mostrar se os numeros informados são perfeitos ou não.');Writeln('Insira apenas números inteiros e positivos');Writeln('Aperte qualquer tecla pra começar');readkey;Writeln('Informe os números'); for x:=1 to 10 do begin readln (numero); if numero<0 then writeln('Número inválido. Informe apenas inteiros positivos') else calculo; end; Writeln('Pressione qualquer tecla para finalizar'); readkey;End.
No aguardo!
Exercícios em Pascal.doc