BIG
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <windows.h>
// 모스 부호를 나타내는 구조체
struct MorseCode {
char letter; // 알파벳
char* code; // 모스 부호
};
// 알파벳과 모스 부호를 저장하는 배열
struct MorseCode morseCodes[] = {
{'A', ".-"},
{'B', "-..."},
{'C', "-.-."},
{'D', "-.."},
{'E', "."},
{'F', "..-."},
{'G', "--."},
{'H', "...."},
{'I', ".."},
{'J', ".---"},
{'K', "-.-"},
{'L', ".-.."},
{'M', "--"},
{'N', "-."},
{'O', "---"},
{'P', ".--."},
{'Q', "--.-"},
{'R', ".-."},
{'S', "..."},
{'T', "-"},
{'U', "..-"},
{'V', "...-"},
{'W', ".--"},
{'X', "-..-"},
{'Y', "-.--"},
{'Z', "--.."}
};
// 모스 부호를 비프음으로 출력하는 함수
void playMorseCode(char* morseCode) {
// 비프음 속도
int dotDuration = 200;
// 모스 부호를 반복하면서 각 문자를 비프음으로 변환하여 재생
for (int i = 0; morseCode[i] != '\0'; i++) {
if (morseCode[i] == '.') {
Beep(1000, dotDuration);
}
else if (morseCode[i] == '-') {
Beep(1000, 3 * dotDuration);
}
else {
// Sleep(dotDuration);
}
}
}
// 문자열을 모스 부호로 변환하는 함수
char* encodeMessage(char* message){
// 결과를 저장할 문자열
char* result = malloc(strlen(message) * 10 + 1); // 메모리 할당
// 문자열을 모스 부호로 변환
for (int i = 0; message[i] != '\0'; i++) {
// 대문자로 변환
char c = toupper(message[i]);
// 알파벳을 찾아서 모스 부호를 가져옴
for (int j = 0; j < sizeof(morseCodes) / sizeof(morseCodes[0]); j++) {
if (morseCodes[j].letter == c) {
result = strcat(result, morseCodes[j].code); // 문자열 연결
result = strcat(result, " "); // 문자열 연결
break;
}
}
}
// 마지막에 공백 제거
if (strlen(result) > 0 && result[strlen(result) - 1] == ' ') {
result[strlen(result) - 1] = '\0';
}
printf("The Morse CODE is: %s\n\n", result);
/*
printf("The Mos CODE is: ");
for (int l = 0; result[l] != '\0'; l++) {
printf("%c", result[l]);
}
printf("\n\n");
*/
return result;
}
int main(void)
{
char str[100];
printf("INPUT - uppercase alphabet -: ");
scanf("%s", str);
str[strcspn(str, "\n")] = '\0';
printf("\n");
printf("The string is: ");
for (int i = 0; str[i] != '\0'; i++) {
printf("%c", str[i]);
}
printf("\n\n");
char* morseCode = encodeMessage(str);
printf("\n");
printf("The Mos CODE is: ");
for (int l = 0; morseCode[l] != '\0'; l++) {
printf("%c", morseCode[l]);
}
printf("\n\n");
Beep(1500, 1000); // 1000 Hz, 0.5초 동안 출력
playMorseCode(morseCode);
//playMorseCode(".... . .-.. .-.. ---");
//Beep(1500, 1000); // 1000 Hz, 0.5초 동안 출력
return 0;
}
LIST
'!!...C' 카테고리의 다른 글
[ C ] Sample Code - 숫자키 1을 누르고 있는 동안 음계 도 음을 비프음으로 출력하는 샘플코드 (0) | 2023.02.23 |
---|---|
[ C ] Sample Code - 구조체-02 - 구조체를 배열로 선언하여 사용하기 (0) | 2023.02.23 |
[ C ] Sample Code - windows beep mos code Hello (0) | 2023.02.22 |
[ C ] Sample Code - scanf (0) | 2023.02.21 |
[ C ] Sample Code - printf (0) | 2023.02.21 |