※진짜 지금 글 쓰기 귀찮아서 이상하게 써도 양해 부탁드립니다※
C언어로 카이사르 암호 해독기 만들기(2) 최종본
어제는 진짜 정신이 나가서 못 만들었지만 결국은 만들었다. 어제 있던 댓글 중 하나가 '카이사르 암호가 뭐에요?' 라는 질문이 있어서 짧게 설명하고 넘어가자면 알파벳을 일정한 수 만큼 간격
bollt.tistory.com
위에 글을 봐주세요!! 감사합니다~!
오늘은.. 아니 12시가 넘었으니 어제는
카이사르 번역기를 취미로 만들어 보았다.
간단하게 ASCII 코드를 이용하여 만들어 봤는데
...젠장 어디서 잘못된 거ㅈ
#include <stdio.h>
#include <string.h>
int frwd (int a, int b) { //a: ASCII / b: cnge
if (a == 0) {
return 0;
}
if ((a - b) < 97) {
b += (122 - a);
a = (122 - b);
return (a);
}
else {
a -= b;
return (a);
}
}
int bcwd (int a, int b) { //a: ASCII / b: cnge
if (a == 0) {
return 0;
}
if ((a + b) > 122) {
b -= (a - 97);
a = 97 + b;
return (a);
}
else {
a += b;
return (a);
}
}
int main() {
int cnge = 0, pm = 0, N = 0; //cnge: 얼마나 앞당길지 / pm: 앞으로, 뒤로
char str[100] = { 0 };
int ASCII[100] = { 0 };
printf("암호를 얼마나 앞(1)/뒤(2) 당길지 선택 ex) 2 1 -> 2칸 앞으로: \n");
scanf("%d %d", &cnge, &pm);
printf("\n문자열을 입력하세요 (조건: Small Eng, 100, space X) \n");
scanf("%s", str);
// for (int q = 0; q < 100; q++){
//
// }
for (int q = 0; q < 100; q++) {
ASCII[q] = str[q];
// if (ASCII[q] < 97 && ASCII[q] < 122) {
// break;
// }
// N++;
if (pm == 1) {
ASCII[q] = frwd(ASCII[q], cnge);
}
else if (pm == 2) {
ASCII[q] = bcwd(ASCII[q], cnge);
}
else {
printf("\nerror");
return 0;
}
// printf("%c", ASCII[q]);
// if(ASCII[q] >= 97 && 122 >= ASCII[q]) {
// printf("%c", ASCII[q]);
// }
// else {
// break;
// }
}
for (int q = 0; ASCII[q] >= 97 && 122 >= ASCII[q]; q++) {
N++;
}
// printf("%d", N);
// return 0;
for (int q = 0; q < N; q++) {
printf("%c", ASCII[q]);
}
return 0;
}
string 헤더 파일과 여러 주석들이 있는데
그만큼 노력했다고(?) 생각하면 된다정확하게 말해선 어이없는 오류 떄문에 이거저거 다 해본 거다
일단 문제가 생긴 부분은 코드를 번역할 때 z -> a로 넘어가는 부분인데
frwd와 bcwd를 약간 수정하니
그냥 출력이 안된다.
(그 전에는 첫번 째 입력이 10, 2라 할 때
s와 a가 같은 취급을 받았ㄷ)
집중이 하나도 안되는 상태니 언젠가 다시 코드를 수정해서 오겠다.
대충 알고리즘 설명
1. 얼마나 앞/뒤로 문자를 땡길 지 결정
2. 문자열 입력 (암호화 시킬 문장)
3. int타입으로 저장
4. 함수 fr/bcwd로 ASCII[q]와 cnge 변수 점프
5. 앞/뒤로 땡기기, return
6. ASCII[q] == 0 이 될 때 까지 char타입으로 출력이 글예상 반응: 파이선에는 몇 줄이면 끝나는데 ㅋㅋ 파이썬으로 와
2022.07.17 - [Diary/그 외 코딩 잡 지식] - 프로그래머들에게 추천하는 코딩 폰트, D2coding!
2022.07.17 - [Let's Make Series/Let's Make Drone] - 방학 동안의 대규모(?) 프로잭트 [Let's Make Drone - Epi 1]
2022.07.17 - [Let's Make Series/Let's Make Drone] - 방학 동안의 대규모(?) 프로잭트 [Let's Make Drone - Epi 1]
'Diary > 코딩 갖고 놀기' 카테고리의 다른 글
C언어로 카이사르 암호 해독기 만들기(2) 최종본 (2) | 2022.07.21 |
---|