PHP - tengo una duda a la hora de desplazar las letras

 
Vista:
sin imagen de perfil
Val: 10
Ha aumentado su posición en 15 puestos en PHP (en relación al último mes)
Gráfica de PHP

tengo una duda a la hora de desplazar las letras

Publicado por yami (4 intervenciones) el 19/10/2020 13:06:05
El problema es el siguiente tengo que comprobar que el desplazamiento sea cíclico ósea que cuando tenga que poner un numero grande me vaya bien, me va todo bien pero lo que pasa donde me debería de codificarme una letra en minúscula la pone en mayúscula ósea pongo desplazamiento 200 pj Hola mundo y en la codificación me sale esto GDs EMFvG y en decodificación esto ola mundo he estado y debuggeando y no sé donde podria estar el fallo paso codigo.


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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<?php
 
 
function codificar($frase, $desplazamiento){
	$letras = array(' ','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
 
 
 
	$fraseArray = str_split($frase);
	$mensaje ="";
 
if ($desplazamiento > 26) {
  $desplazamiento = $desplazamiento %26;
}
 
	for($i = 0; $i< count($fraseArray); $i++ ){
 
    //obtenemos indice que corresponde cada letra del mensaje en el array $letras
		$indice = array_search($fraseArray[$i], $letras);
		$indiceFinal = $indice + $desplazamiento;
 
 
 
		if ( $indiceFinal > 51 ){
			$diferencia = $indiceFinal - 51;
			$indiceFinal = $diferencia - 1;
		}
 
 
		if($indice){
			$fraseArray[$i] = $letras[$indiceFinal];
		}
		$mensaje .= $fraseArray[$i];
 
	}
	return $mensaje;
 
}
 
	function decodificar($frase, $desplazamiento){
	$letras = array(' ','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
 
 
 
	$fraseArray = str_split($frase);
 
 
	$mensaje ="";
 
if ($desplazamiento > 26) {
  $desplazamiento = $desplazamiento %26;
}
 
 
	for($i = 0; $i< count($fraseArray); $i++ ){
 
 
		$indice = array_search($fraseArray[$i], $letras);
		$indiceFinal = $indice - $desplazamiento;
 
		if ( $indiceFinal < 0 ){
			$diferencia = $indiceFinal + 51;
			$indiceFinal = $diferencia + 1;
		}
 
 
		if($indice){
			$fraseArray[$i] = $letras[$indiceFinal];
		}
		$mensaje .= $fraseArray[$i];
 
 
	}
 
 
	return $mensaje;
}
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
Imágen de perfil de Luis
Val: 128
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

tengo una duda a la hora de desplazar las letras

Publicado por Luis (31 intervenciones) el 19/10/2020 20:36:22
Hola,

Con desplazamiento 200 la H ( de Hola mundo ) se convierte en espacio en blanco, por eso después no lo decodifica.
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: 10
Ha aumentado su posición en 15 puestos en PHP (en relación al último mes)
Gráfica de PHP

tengo una duda a la hora de desplazar las letras

Publicado por yami (4 intervenciones) el 20/10/2020 17:39:01
gracias yo lo he visto como se hace
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