Pascal/Turbo Pascal - ejercicio recursivo duda

 
Vista:
sin imagen de perfil
Val: 5
Ha aumentado 1 puesto en Pascal/Turbo Pascal (en relación al último mes)
Gráfica de Pascal/Turbo Pascal

ejercicio recursivo duda

Publicado por ricardo (6 intervenciones) el 17/05/2016 21:19:13
Buenas!

Veran, tengo un ejercicio que dice asi: Encontrar un procedimiento recursivo que lea una serie de caracteres hasta encontrar una “F” e imprimirlos en orden inverso.

Lo resolvi asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Program tp6;
 
Procedure Invertir (Car:Char);
Begin
	If (Car<>'F') then
		Begin
		Write ('Ingrese caracter: ');
		Readln(Car);
		Invertir(Car);
		Writeln (Car);
		End;
End;
 
Var
Car:char;
Begin
	Invertir (Car);
	Writeln;
End.

Si pruebo A B C D E F devuelve F E D C B A.

Ahi funciona bien, lo que no entiendo es porque imprime solos F cuando modifico el parametro Car por un entrada/salida (por referencia creo que dice) quedando asi:

Procedure Invertir (Var Car:Char);

En este caso, si pruebo otra vez A B C D E F devuelve F F F F F F

Esa es mi duda, si la pudieran constestar se los agradeceria!
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

ejercicio recursivo duda

Publicado por ramon (2158 intervenciones) el 18/05/2016 22:47:36
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
{Mira A ver si Ayuda }
 
program inversion;
  uses
     crt;
   var
     car : char;
 
 
  function invertir(c : char) : char;
  begin
     if upcase(c) = 'F' then
     invertir := 'F'
   else
      begin
         gotoxy(ord('F') - ord(upcase(c)) + 1,1);write(c);
         if upcase(c) > 'F' then
         invertir := invertir(upcase(chr(ord(c) - 1)))
       else
         invertir := invertir(upcase(chr(ord(c) + 1)));
 
      end;
  end;
 
 
  begin
     clrscr;
     car := 'M';
     invertir(car);
     if upcase(car) > 'F' then
     begin
        gotoxy(ord('F') + ord(upcase(car)),1);write('F');
     end
   else
     begin
       gotoxy(1,1);write('F')
     end;
     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