Kezdőoldal » Számítástechnika » Programozás » Hogyan tudom elérni azt a...

Hogyan tudom elérni azt a Vigenére-kódolásban, hogy a szóközöket és egyébb karaketereket ne kódolja?

Figyelt kérdés

C nyelvben próbálom megprogramozni ezt a fajta kódolást. Sikerült is, csak az a baj, hogy a szóközt és a betűkön kívül más karaktereket is bekódol, amit én nem szeretnék. Hogyan tudom ezt megfogalmazni? Mivel a kulcsom és a kódolni való szövegem const charként van megadva, ezért készítettem belőlük egy másolatatot, átalakítottam mind nagybetűre, ezt a kódrészemből kihagyom, és csak a kódolósrészét írtam le.


for (i=0;i<strlen(copy);i++)

{

copy[i]=(copy[i]+copykey[i])%26+'A';

}


Hogyha a Hello World! mondatot szeretném kódolni, akkor azt kelle kapnom, hogy "JSXAI PSINR!" Kulcsszó:COMPUTER. Azonban én ezt kapom: JSXAIMAFEYQH4. Nagyon szépen kérlek titeket, Kedves Válaszadók, ha tudtok, szánjatok rám és erre a feladatra pár percet! Nagyon sokat segítenétek! :)



#szóköz #Vigenére kódolás
2016. márc. 20. 17:57
1 2
 1/13 anonim ***** válasza:
100%
Előbb áruld el mi értelme volna a szóköz és egyéb karaktereket kiemelni a többi közül.
2016. márc. 20. 18:07
Hasznos számodra ez a válasz?
 2/13 A kérdező kommentje:
Azért kellene, hogy úgy nézzen ki a megoldás, mint ahogyan kellene, és ne úgy, ahogyan nekem jött ki.
2016. márc. 20. 18:25
 3/13 anonim ***** válasza:

Akkor előszűrést kell alkalmaznod.

Végigfutsz az enkódolandó stringeden és kiszeded belőle azt amire nincs szükséged. Forrás_str > filter > cél_srt.

2016. márc. 20. 18:40
Hasznos számodra ez a válasz?
 4/13 A kérdező kommentje:
És a végén hogyan illesztem vissza azokat a jeleket?
2016. márc. 20. 19:10
 5/13 anonim ***** válasza:
Talán ezért nem kéne azokat kiszedni. Erre céloztam az első kérdésemmel.
2016. márc. 20. 19:18
Hasznos számodra ez a válasz?
 6/13 A kérdező kommentje:
Hm, akkor hibás lenne a forciklusom, mert nem úgy néz ki, ahogy kellene...
2016. márc. 20. 19:28
 7/13 SimkoL ***** válasza:

Hát a C-hez nem értek, de valahogy így:


#include <stdio.h>

#include <stdlib.h>


int main(int argc, char *argv[])

{

int i, j = 0;

char copy[255] = {'\0'};

char copykey[255] = {'\0'};

char vige[255] = {'\0'};

char text[] = "Hello world!";

char key[] = "computer";

for (i = 0; i < strlen(text); i++) copy[i] = toupper(text[i]);

for (i = 0; i < strlen(key); i++) copykey[i] = toupper(key[i]);

for (i = 0; i < strlen(copy); i++){

if (isupper(copy[i])){

vige[i] = (copy[i] + copykey[j]) % 26 + 'A';

j++;

if ( j >= strlen(copykey)) j = 0;

}

else vige[i] = copy[i];

}

printf("%s \n", copy);

printf("%s \n", copykey);

printf("%s \n", vige);

system("PAUSE");

return 0;

}

2016. márc. 20. 20:07
Hasznos számodra ez a válasz?
 8/13 anonim ***** válasza:
Akkor csináld azt, hogy a space-t meg a sorvég karaktereket nem kódolod el, de az enkódolt stringbe beilleszted és ugyanezt csinálod dekódolásnál is.
2016. márc. 20. 20:17
Hasznos számodra ez a válasz?
 9/13 A kérdező kommentje:
Utolsó előtti válaszoló, k˜öszönöm! Szuper, csak az a baj, hogy a második fele nem PSINR lett, hanem AFEYQ! Nagyon köszönöm válaszod! :)
2016. márc. 20. 20:31
 10/13 SimkoL ***** válasza:

Nekem ez jön ki: "JSXAI PSINR!"

Nem → vige[i] = (copy[i] + copykey[i]) % 26 + 'A';

Hanem → vige[i] = (copy[i] + copykey[j]) % 26 + 'A';

A copykey indexe j !

2016. márc. 20. 20:39
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, 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!