2022-03-12-C-Chap12-문제31
글자의 순서를 일정 간격으로 밀어서 치환하는 방식은 시저 암호화 방식이다.
조건
- 문자를 작성하고 암호화 할 때, 대문자는 뒤로 5칸 밀고, 소문자는 뒤로 10칸 밀게 한다.
또한 숫자는 뒤로 3칸을 밀게 한다.
Source
#include<stdio.h>
#include<string.h>
#include<ctype.h>
int main(void) {
char source[100] = "Welcome! 2018year!! Here is Dongguk!";
char tmp;
source[strlen(source)] = ' '; //보정
printf("%d\n", strlen(source));
printf("%s\n", source);
for (int i = 0; i < strlen(source); i++) {
if (isupper(source[i])) {
if (i + 5 >= strlen(source))
source[i + 5] = source[i];
else {
tmp = source[i + 5];
source[i + 5] = source[i];
source[i] = tmp;
}
}
else if (islower(source[i])) {
if (i + 10 >= strlen(source))
source[i + 10] = source[i];
else {
tmp = source[i + 10];
source[i + 10] = source[i];
source[i] = tmp;
}
}
else if (isdigit(source[i])) {
if (i + 3 >= strlen(source))
source[i + 3] = source[i];
else {
tmp = source[i + 3];
source[i + 3] = source[i];
source[i] = tmp;
}
}
}
printf("%d\n", strlen(source));
printf("%s", source);
return 0;
}