Pascal/Turbo Pascal - cifrado cesar (frase)

 
Vista:

cifrado cesar (frase)

Publicado por flm14 (2 intervenciones) el 14/05/2020 12:13:54
buenas,
me han pedido que desarrolle un programa en Pascal que pida un desplazamiento y una frase completa (acabada en punto), mostrando por pantalla el resultado de aplicar el cifrado César con ese desplazamiento a toda la frase. El programa tengo que hacerlo a través de un procedimiento,

por ahora llevo esto de programa, pero no me sale lo que me pide al ejecutarlo, si alguien pudiera ayudar le estaría agradecido.

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
program cesarfrase;
 
procedure desplazamiento ( var frase : string; var n : integer);
 
var
 
     pos, cont : integer;
begin
 
for cont:= 1 to length (frase) do
 begin
     pos := ord(frase[cont]);
     if  (pos >= 65) AND (pos <= (90 - n)  ) or (pos >= 97) AND (pos <= (122 - n) )  then
 
  begin
     pos := pos + n;
     write(chr(pos));
  end;
 
 end;
end;
 
var
    frase : string;
    n : integer;
 
BEGIN
 
writeln('Introduzca la frase acabada en punto');
readln(frase);
writeln('Introduzca un desplazamiento');
readln(n);
desplazamiento(frase, n);
 
END.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder
sin imagen de perfil
Val: 86
Bronce
Ha mantenido su posición en Pascal/Turbo Pascal (en relación al último mes)
Gráfica de Pascal/Turbo Pascal

cifrado cesar (frase)

Publicado por David (37 intervenciones) el 14/05/2020 17:47:23
Por si te resulta útil cuando pegues el código del programa selecciónalo y usa el icono de code </> sobre el texto que ese texto para que conserve las tabulaciones. Échale un vistazo a ver si entiendes lo que yo he puesto.

Si no lo entiendes o tienes dudas de porque el tuyo falla puedes o bien preguntar de nuevo o si usas Lazarus u otro compilador que lo permita añadir puntos de interrupción para supervisar cuando entra y cuando no en los distintos bucles y condicionales.

(AVISO: puede que el uso que hice de la variable posFinal no sea el más apropiado, le llamé posFinal pero realmente luego termino mostrando pos).

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
program cesarfrase;
 
procedure desplazamiento ( var frase : string; var n : integer);
 
var
 
	pos, posFinal, cont: integer;
 
begin
 
	for cont:= 1 to length (frase) do
	begin
 
		pos := ord(frase[cont]);
		posFinal := ord(frase[cont]) + n;
 
		if (pos >= 97) and (pos <= 122) then
		begin
  			if posFinal > 122 then
  				pos := 97 + (posfinal-122)-1
            else
            	pos := posFinal;
		end;
 
		if (pos >= 65) and (pos <=90) then
		begin
			if posFinal > 90 then
  				pos := 65 + (posfinal-90)-1
            else
            	pos := posFinal;
	  	end;
 
		write(char(pos));
 
	end;
end;
 
var
	frase : string;
	n : integer;
 
BEGIN
 
	write('Introduzca la frase: ');
	readln(frase);
	write('Introduzca un desplazamiento: ');
	readln(n);
	writeln('');
	write('El resultado es: ');
	desplazamiento(frase, n);
	readln();
 
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

cifrado cesar (frase)

Publicado por flm14 (2 intervenciones) el 14/05/2020 18:20:34
Muchas gracias David! , solo he cambiado lo de posFinal y el programa se ejecuta sin problema y realiza bien lo que se pide.
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
sin imagen de perfil
Val: 86
Bronce
Ha mantenido su posición en Pascal/Turbo Pascal (en relación al último mes)
Gráfica de Pascal/Turbo Pascal

cifrado cesar (frase)

Publicado por David (37 intervenciones) el 14/05/2020 19:11:54
De nada compi, ¿lo ves claro o quieres resolver alguna duda?
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