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


0