Kezdőoldal » Számítástechnika » Programozás » Cézár kódolás segitségkérés,ho...

Cézár kódolás segitségkérés,hogy lehet?

Figyelt kérdés

Hogy lehet C#-ban megoldani hogy Cézár kódolással ne csak a 26 angol betűt hanem a számjegyeket is számolja?Illetve ha felkiáltójel stb.van azt hagyja figyelmen kivül?


Array s egyéb függvények nélkül szeretnem



2020. okt. 23. 01:22
1 2 3
 1/23 tabaki ***** válasza:
61%

Nem tudom, mert nem értem a problémát. Azokat a karaktereket veszed figyelembe vagy negligálod, amelyeket csak akarod, nem? Mutasd be a programodat, hogy lássuk, mivel kísérletezel.

P.S.: Az array nem függvény, hanem a tömböt jelenti angolul.

2020. okt. 23. 01:45
Hasznos számodra ez a válasz?
 2/23 A kérdező kommentje:
Az lenne a feladat hogy olyan cézár függvényt csináljak ahol max 36 lehet az eltolás mértéke,de csak az a-z,A-Z,0-9 karaktereket tolhatja el annyival amennyit kódnak megadsz.Azokat a karaktereket amíket ez a szabály nem fed le nem változtathatja meg.
2020. okt. 23. 02:16
 3/23 A kérdező kommentje:

static void Main(string[] args)

{


string text = "Hello! World! 99";

string cipherText = Encipher(text, 22);

string plainText = Decipher(cipherText, 22);

Console.WriteLine(text);

Console.WriteLine(cipherText);

Console.WriteLine(plainText);

Console.ReadLine();



}



private static char Cipher(char ch, int kulcs)

{

if (!char.IsLetterOrDigit(ch))

return ch;


char offset = char.IsUpper(ch) ? 'A' : 'a';

return (char)((((ch + kulcs) - offset) % 26) + offset);

}


public static string Encipher(string input, int kulcs)

{

string output = string.Empty;


foreach (char ch in input)

output += Cipher(ch, kulcs);


return output;

}


public static string Decipher(string input, int key)

{

return Encipher(input, 26 - key);

}

}

}



A gond hogy ha a számokat is be akarom rakni,azoknál már szétesik az egész s nem fordítja vissza..Lehet tömbökkel kéne szórakozni?

2020. okt. 23. 02:20
 4/23 tabaki ***** válasza:
Köszönöm, sajnos csak valamikor délután jövök haza, majd akkor jobban belenézek.
2020. okt. 23. 07:53
Hasznos számodra ez a válasz?
 5/23 anonim ***** válasza:

Nem ertem, miert nem kezeled kulon a betuket es szamokat?

Ha adott karakter 48-57 intervallumba esik, akkor szam, ha 65-90-be, akkor nagybetu, ha 97-122-be, akkor pedig kisbetu. Ennek megfeleloen kodolod oket, a tobbihez meg nem nyulsz.

2020. okt. 23. 13:35
Hasznos számodra ez a válasz?
 6/23 tabaki ***** válasza:

Így például jónak tűnik:


            private static char Cipher(char ch, int key)

            {

                  if (!char.IsLetterOrDigit(ch)) return ch;

                  char offset;

                  if (char.IsDigit(ch))

                        offset = '0';

                  else

                        offset = char.IsUpper(ch) ? 'A' : 'a';

                  return (char)((((ch + key) - offset) % 26) + offset);

            }

2020. okt. 23. 20:06
Hasznos számodra ez a válasz?
 7/23 tabaki ***** válasza:
Bocs, ezt elkapkodtam, más értékekre nem oké...
2020. okt. 23. 20:15
Hasznos számodra ez a válasz?
 8/23 tabaki ***** válasza:

Nekem egyre inkább úgy tűnik, hogy logikai bukfenc van abban az ötletben, hogy a dekódolást ugyanaz a metódus végezze, mint amelyik a sifrírozást, ami szintén nem egészen van rendben, ugyanis az angol ábécé 26 betűje nemigen hozható egyszerűen algoritmizálható kapcsolatba a 10 számjeggyel - emiatt a számjegyek önálló életet élnek a programon belül, például az eltolás mértékétől függően hol betűkké, hol más karakterekké alakulnak. Amikor ezután újra ugyanezen metódussal próbálod visszaalakítani, akkor az első esetben a betűknek kijáró offset miatt nem számjegyek, hanem egyéb betűk lesznek belőlük, a másodikban pedig módosítatlanul térnek vissza, hiszen a betűkön és számjegyeken kívüli értékeket békén hagyod. De valami alapjaiban sem stimmel azzal, hogy harminchat jelet akarsz huszonhatféle lehetőségként értelmezni.

Ami az eltolást intéző bonyodalmas kifejezést illeti, úgy látom, hogy a próbán belül azért működik egyáltalán (ha jól-rosszul is), mert a 26 vagy annál kisebb mértékű eltolás esetén a visszaalakításkor a képletben szereplő 𝗰𝗵+𝗸𝘂𝗹𝗰𝘀-𝗼𝗳𝗳𝘀𝗲𝘁 is 26-nál kisebb értéket ad, amelynek az egészosztása 0-t eredményez, tehát a modulo értéke maga a 𝗰𝗵+𝗸𝘂𝗹𝗰𝘀-𝗼𝗳𝗳𝘀𝗲𝘁. Az éppen 26-os eltolás is speciális eset, mert ott a modulo 0 lesz, tehát valójában nincs eltolás. Az érték növelésével viszont kezdődnek a bajok. Próbáld ki mondjuk 68 vagy 123 eltolással, és a karakterek hamar átcsúsznak a kezelhetetlen tartományba. Ez az elképzelés nagyobb részt erősen zsákutca-gyanús, szerintem érdemes lenne másfelé elindulnod. Mondjuk, kijelölhetnél különböző értékhatárokat a számjegyek és a betűk eltolására, aztán ennek az alapján a visszaállítást is többféle metódussal oldanád meg – de őszintén szólva, nekem mégiscsak valami tömbös megoldás tűnne egyszerűbbnek.

2020. okt. 24. 01:04
Hasznos számodra ez a válasz?
 9/23 A kérdező kommentje:

Köszönöm!


Akkor egyszerübb egy tömbbe raknom a tartomanyt majd s beadott szövegnel sima kivalasztás tétele s úgy csúsztat:-)

2020. okt. 24. 01:23
 10/23 anonim válasza:

Elég szánalmas, hogy egy OE mérnökinfós egy ilyen ócska feladatot nem képes magától megoldani. Mindjárt leadom a megoldásom moodle-n és beküldöm ide is :)

Ha normálisan tanulnátok a kikúrt anyagokat, akkor nem kellene túlbonyolítani a feladatot minden szarral meg itt kérdezgetni. De nem...

2020. okt. 24. 01:28
Hasznos számodra ez a válasz?
1 2 3

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!