Pascal/Turbo Pascal - Ayuda recursividad

 
Vista:
sin imagen de perfil

Ayuda recursividad

Publicado por Juan Ignacio (8 intervenciones) el 05/12/2013 06:57:30
Hola comunidad, me creé una cuenta porque no encontré el problema por ningún lado googleando. En los parciales que tuve me pidieron que realize algunos programas usando recursividad en pascal, yo los realizé con variables globales pero por lo visto están mal. Mi pregunta es, si por ejemplo quiero realizar un contador para que me diga cuántas veces está x dígito en un número ingresado por el usuario, cómo haría para que la variable contador no sea global? Lo intenté pero siempre me reinicia la variable al volver "desapilando" digamos. Gracias desde ya!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ayuda recursividad

Publicado por ramon (2158 intervenciones) el 05/12/2013 18:50:14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
{A ver si esto ayuda}
 
 program recursivadad;
  uses
    crt;
  var
    dato : longint;
    np : char;
 
 
  function contador(d : longint;var nu : char) : integer;
  var
   num : longint;
   pp, tt, cont : integer;
   repes : array['0'..'9'] of integer;
   cad : string[15];
   re : char;
 
    function digitos(n : longint) : integer; {fincion recursiva}
    begin
        if (n > -10) and (n < 10) then
         digitos := 1
     else
          digitos := 1 + digitos(n div 10);
    end;
 
   begin
      num := digitos(d);
      str(d,cad);
      pp := 0;
      fillchar(repes,sizeof(repes),0);
      for cont := 1 to num do
      begin
        re := cad[cont];
        repes[re] := repes[re] + 1;
       end;
         for tt := 0 to 9 do
          if repes[chr(tt + 48)] > 1 then
          begin
          if pp < repes[chr(tt + 48)] then
          begin
             pp := repes[chr(tt + 48)];
             nu := chr(tt + 48);
          end;
       end;
         contador := pp;
   end;
 
 
  begin
      clrscr;
      writeln('   Entre Un Numero Entero Maximo 8 Cifras');
      write('  Numero : ');
      readln(dato);
      write(' Se Repite : ',contador(dato,np),' Veces  El Numero : ',np);
 
      readkey;
  end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar