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
๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค!