forked from mouredev/retos-programacion-2023
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Maldita "ñ"
1 parent
b374671
commit 6f138a9
Showing
1 changed file
with
65 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
/* | ||
* Crea un programa que realize el cifrado César de un texto y lo imprima. | ||
* También debe ser capaz de descifrarlo cuando así se lo indiquemos. | ||
* | ||
* Te recomiendo que busques información para conocer en profundidad cómo | ||
* realizar el cifrado. Esto también forma parte del reto. | ||
*/ | ||
|
||
using System; | ||
|
||
namespace reto24 | ||
{ | ||
public class Reto24 | ||
{ | ||
static void Main(string[] args) | ||
{ | ||
int desplazamiento = 3; | ||
string texto = "Con diez cañones por banda,\r\nviento en popa a toda vela,\r\nno corta el mar, sino vuela\r\nun velero bergantin; "; | ||
string texto_cifrado = "Frq glhc fdñrqhv sru edqgd, \r\nylhqwr hq srsd d wrgd yhod, \r\nqr fruwd ho pdu, vlqr yxhod \r\nxq yhohur ehujdqwlq;"; | ||
|
||
Console.WriteLine($"Texto:\r\n{texto}"); | ||
Console.WriteLine($"Texto cifrado:\r\n{Cifra_texto(desplazamiento, texto)}"); | ||
Console.WriteLine($"Texto descifrado:\r\n{Descifra_texto(desplazamiento, texto_cifrado)}"); | ||
|
||
Console.ReadKey(); | ||
} | ||
|
||
private static string Cifra_texto(int desplazamiento, string texto) | ||
{ | ||
string texto_cifrado = ""; | ||
|
||
foreach (var caracter in texto) | ||
{ | ||
if (caracter == 'ñ') | ||
{ | ||
texto_cifrado += caracter; | ||
} | ||
else if (char.IsLetter(caracter)) | ||
{ | ||
int codigoAscii; | ||
|
||
if (char.IsUpper(caracter)) | ||
codigoAscii = ((int)caracter - (int)'A' + desplazamiento + 26) % 26 + (int)'A'; | ||
else | ||
codigoAscii = ((int)caracter - (int)'a' + desplazamiento + 26) % 26 + (int)'a'; | ||
|
||
char letra_codificada = (char)codigoAscii; | ||
|
||
texto_cifrado += letra_codificada; | ||
} | ||
else | ||
{ | ||
texto_cifrado += caracter; | ||
} | ||
} | ||
|
||
return texto_cifrado; | ||
} | ||
|
||
private static string Descifra_texto(int desplazamiento, string texto) | ||
{ | ||
return Cifra_texto(-desplazamiento, texto); | ||
} | ||
} | ||
} |