
Published 2022. 4. 16. 22:01
728x90
Caesar cipher Code
// ์นด์ด์ฌ๋ฅด ์ํธ๋ฅผ ์ฌ์ฉํ ์ํธํ ๊ทธ๋ฆฌ๊ณ ๋ณตํธํ ์ฝ๋ฉ ํ๋ก๊ทธ๋จ ๋ง๋ค๊ธฐ
// ex) key = 3, m = apple, enc = dssoh
#include <stdio.h>
// ์ํธํ ํ๋ ํจ์
void ency() {
int ekey, i; // ์ํธํค์ ๋ฐ๋ณต๋ฌธ์ ์ฐ์ผ ๋ณ์ ์ ์ธ
char m[100]={0}; // ํ๋ฌธ ๋ณ์ ์ ์ธ
char enc[100] = { 0 }; // ์ํธ๋ฌธ ๋ณ์ ์ ์ธ
printf("ํค ๊ฐ์ ์
๋ ฅํด์ฃผ์ธ์ : ");
scanf_s("%d", &ekey); // ํค ๊ฐ ์
๋ ฅ ๋ฐ๊ธฐ
if (ekey < 0) // -3 = 23
ekey += 26;
printf("ํ๋ฌธ์ ์
๋ ฅํด์ฃผ์ธ์ : ");
scanf_s(" %[^\n]s", &m, 100); // ํ๋ฌธ ์
๋ ฅ ๋ฐ๊ธฐ
for (i = 0; i < 100; i++) { // 100๋ฒ ๋ฐ๋ณต
if (m[i]>=65 && m[i]<=90) // ํ๋ฌธ ๋ฐฐ์ด์ i๋ฒ์งธ ๊ฐ์ด ์์คํค์ฝ๋๊ฐ 65์ด์ 90์ดํ [ ๋๋ฌธ์ ]
{
m[i] = (m[i] - 65 + ekey) % 26 + 65;
/*
ex) A[i] = 'C', key = 3๋ผ๋ฉด 'F'...
(67 - 65 + 3) % 26 + 65 = 5 % 26 + 65 = 70 [ F ]
์ด๋ ๊ฒ ๊ณ์ฐ ํ๋ ์ด์ ? ์์คํค์ฝ๋ 90 ๋ค์์ด 65๋ก ๋ง๋ค๊ธฐ ์ํด์!
ex) A[i] = 'Z', key = 3๋ผ๋ฉด 'C'...
(90 - 65 + 3) % 26 + 65 = 28 % 26 + 65 = 67 [ C ]
*/
enc[i] = m[i]; // ๊ณ์ฐ ๊ฐ์ ์ํธ๋ฌธ ๋ฐฐ์ด์ ์ ์ฅํ๊ธฐ
}
else if (m[i] >= 97 && m[i] <= 122) // ํ๋ฌธ ๋ฐฐ์ด์ i๋ฒ์งธ ๊ฐ์ด ์์คํค์ฝ๋๊ฐ 97์ด์ 122์ดํ [ ์๋ฌธ์ ]
{
m[i] = (m[i] - 97 + ekey) % 26 + 97;
enc[i] = m[i];
}
else if(m[i] == ' ') // ์ํธ๋ฌธ ๋ฐฐ์ด์ i๋ฒ์งธ ๊ฐ์ด ๊ณต๋ฐฑ
enc[i] = m[i];
else //์ ์กฐ๊ฑด์ด ํด๋นํ์ง ์์ ๋
break; // ์ข
๋ฃ
}
printf("์ํธ๋ฌธ : %s\n", enc); // ์ํธ๋ฌธ ๋ฐฐ์ด ์ถ๋ ฅ
}
// ๋ณตํธํ ํ๋ ํจ์
void decy() {
int dkey, j;
char denc[100] = { 0 };
char dec[100] = { 0 };
printf("ํค ๊ฐ์ ์
๋ ฅํด์ฃผ์ธ์ : ");
scanf_s("%d", &dkey); // ํค ๊ฐ ์
๋ ฅ ๋ฐ๊ธฐ
if (dkey < 0) // -3 = 3
dkey *= 1;
printf("์ํธ๋ฌธ์ ์
๋ ฅํด์ฃผ์ธ์ : ");
scanf_s(" %[^\n]s", &denc, 100); // ์ํธ๋ฌธ ์
๋ ฅ ๋ฐ๊ธฐ
for (j = 0; j < 100; j++) { // 100๋ฒ ๋ฐ๋ณต
if (denc[j] >= 65 && denc[j] <= 90) // ์ํธ๋ฌธ ๋ฐฐ์ด์ i๋ฒ์งธ ๊ฐ์ด ์์คํค์ฝ๋๊ฐ 65์ด์ 90์ดํ [ ๋๋ฌธ์ ]
{
if ((denc[j] - 65 - dkey) < 0)
{
denc[j] += 26;
denc[j] = (denc[j] - 65 - dkey) % 26 + 65;
}
else
denc[j] = (denc[j] - 65 - dkey) % 26 + 65;
/*
ex) a[i] = 'D[68]', key = 3๋ผ๋ฉด 'A[65]'...
(68 - 65 - 3) % 26 + 65 = 0 % 26 + 65 = 65 [ A ]
(a[i] - 'A' - key)๊ฐ ์์๋ฉด 26[์ํ๋ฒณ]๋งํผ ๋ํด์ค์ผ์ง ๋ค๋ก๊ฐZ
(65 - 65 - 3) = -3 [์์]์ด๋ฏ๋ก a[i]๊ฐ์ 26[์ํ๋ฒณ]๋งํผ ๋ํด์ฃผ๋ฉด (91 - 65 - 3) % 26 + 25 = 23 % 26 + 65 = 88
*/
dec[j] = denc[j]; // ๊ณ์ฐ ๊ฐ์ ๋ณตํธ๋ฌธ ๋ฐฐ์ด์ ์ ์ฅํ๊ธฐ
}
else if (denc[j] >= 97 && denc[j] <= 122) // ์ํธ๋ฌธ ๋ฐฐ์ด์ i๋ฒ์งธ ๊ฐ์ด ์์คํค์ฝ๋๊ฐ 97์ด์ 122์ดํ [ ์๋ฌธ์ ]
{
if ((denc[j] - 97 - dkey) < 0)
{
denc[j] += 26;
denc[j] = (denc[j] - 97 - dkey) % 26 + 97;
}
else
denc[j] = (denc[j] - 97 - dkey) % 26 + 97;
dec[j] = denc[j];
}
else if (denc[j] == ' ') // ์ํธ๋ฌธ ๋ฐฐ์ด์ i๋ฒ์งธ ๊ฐ์ด ๊ณต๋ฐฑ
dec[j] = denc[j];
else //์ ์กฐ๊ฑด์ด ํด๋นํ์ง ์์ ๋
break; // ์ข
๋ฃ
}
printf("๋ณตํธ๋ฌธ : %s\n", dec); // ๋ณตํธ๋ฌธ ๋ฐฐ์ด ์ถ๋ ฅ
}
// ํ๋ก๊ทธ๋จ ์๋
int main() {
ency();
decy();
return 0;
}
Code Review
728x90
'๐๐ง๐ค๐๐ง๐๐ข๐ข๐๐ฃ๐ ๐ป > C์ธ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋ฐ์ธ์ด 4์กฐ (0) | 2022.05.31 |
---|---|
๋ ์๋ฆฌ ์ ์ ์๋ฆฟ์ ๊ตฌ๋ถํ๊ธฐ (0) | 2022.04.11 |
์ ์ 2๊ฐ ์์ ๋ฐ๊พธ๊ธฐ (0) | 2022.04.11 |