Tu código type tnum=smallint; var a:tnum; b:tnum; s:tnum;
Tu códigoprocedure ingresar(var a:tnum;var b:tnum;var s:tnum);begin writeln('ingrese numero'); read(a); writeln('ingrese numero'); read(b); s:=0end;
Código: Pascalprocedure div_resto(a,b,s:tnum); {Si dentro de los paréntesis no pones "var" cuando hagas la llamada recursiva, estarás pasando los mismos valores (esto no lo sé con seguridad, pero si lo pones, te curas en salud, ya que si pasas los mismo valores tendrías un bucle infinito.}begin if a>=b then begin a:=a-b; inc(s) {Esto no sé que es, supongo que quieres incrementar "s" --> s:= s + 1;} end else {Si a < b no tengo muy claro este punto, ya que "a" que posteriormente dices que es el resto no se sabe si será cero o no, ya que es sería una división con decimales pero cuyo resto no conocemos, con lo cual... habría que mirar bien qué pasaría en este caso} begin a:=0; s:=0 end; div_resto(a-b,b,s+1) {Si no me equivoco (no tengo el compilador instalado) sería algo del estilo --> Procedure div_resto (...);}{Por otro lado, las variables, las estás modificando de nuevo antes de volver a usarlas. Ejemplo a= 100, b = 5. Entra el procedimiento a - b = 95 = a y s = 0 + 1. Llegas al final y le estás enviando los datos de nuevo pero envías Procedure div_resto (95-5, 5, 1+1). Cuando vuelvas a usar los datos, te habrás saltado un paso}{Sería Procedure div_resto (a, b, s);}end;