...
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <conio.h>
#define N 20
#define ESC 0x1b
void ptf(int x);
void ptf2(int x, int y);
int main()
{
int i,j,count,hit,hit2,sum=0,chlong,powk,cumk,num;//변수설명
/*
i = 반복갯수
j = 루프문 사용안할때 증가갯수
hit = 선택지
hit2 = 선택지2
sum = 최종 변경 수
chlong = 문자열(숫자)길이
powk = x제곱승 변수 1 8 64
cumk = 2제곱승 1 2 4 8 16
num = 10진수 입력받는 변 수
*/
char tr_num[N],tr_trnum[N],tr_six2[N],tr_two[3]={4,2,1};
/*
tr_num = 문자열로 숫자를 입력 받을때
tr_trnum = tr_num을 2차변환 할떄 임시거처 그리고 출력
tr_six2 = 16진수 출력 위한 배열
tr_two = 2진수로 변환 할떄 비교배열
*/
do
{
printf("┌─────────────────────┐\n");
printf("│[진수] 변환 프로그램 │\n");
printf("│ │\n");
printf("│ ☞어떤 진수를 변환하길 원하십니까? │\n");
printf("│ ※숫자 키를 눌러 선택하세요. │\n");
printf("│ │\n");
printf("│ 1번 - 2진수 │\n");
printf("│ 2번 - 8진수 │\n");
printf("│ 3번 - 10진수 │\n");
printf("│ 4번 - 16진수 │\n");
printf("│ ESC - 끝내기 │\n");
printf("└─────────────────────┘\n");
hit = getch();
system("cls");
printf("┌─────────────────────┐\n");
printf("│[진수] 변환 프로그램 │\n");
printf("│ │\n");
printf("│ ☞무엇으로 변환 하시겠습니까? │\n");
printf("│ ※숫자 키를 눌러 선택하세요. │\n");
printf("│ │\n");
if(hit != '1')
printf("│ 1번 - → 2진수 │\n");
if(hit != '2')
printf("│ 2번 - → 8진수 │\n");
if(hit != '3')
printf("│ 3번 - → 10진수 │\n");
if(hit != '4')
printf("│ 4번 - → 16진수 │\n");
printf("│ ESC - 끝내기 │\n");
printf("└─────────────────────┘\n");
hit2 = getch();
//초기화
sum=0,powk=0,cumk=1,j=0,count=0,chlong=0,powk=0,cumk=1,num=0;
char tr_num[N]={0},tr_trnum[N]={0},tr_six2[N]={0},tr_six[N]={0};
//2진수
if('1' == hit)
{
if('2' == hit2)//8
{
ptf(2);
scanf("%s", tr_num);
chlong = strlen(tr_num);
ptf2(2,8);
for(i=chlong-1;i>=0;i--)
{
sum = sum + (tr_num[i]-48) * cumk;
cumk <<= 1;
count++;
if(cumk == 8)
cumk = 1;
if(count%3==0)
{
tr_trnum[j] = sum;
sum=0;
j++;
}
if(i==0)
tr_trnum[j] = sum;
}
for(i=j;i>=0;i--)
{
if(i==j && tr_trnum[i]==0)//첫글자가 012같이 0이 나오면 print실행하지않고 넘어간다.
continue;
printf("%d", tr_trnum[i]);
}
}
if('3' == hit2)//10
{
ptf(2);
scanf("%s", tr_num);
chlong = strlen(tr_num);
ptf2(2,10);
for(i=chlong-1;i>=0;i--)
{
sum = sum + (tr_num[i]-48) * cumk;
cumk *= 2;
}
//for(i=j;i>=0;i--)
printf("%d", sum);
}
if('4' == hit2)//16
{
ptf(2);
scanf("%s", tr_num);
chlong = strlen(tr_num);
ptf2(2,16);
for(i=chlong-1;i>=0;i--)
{
sum = sum + (tr_num[i]-48) * cumk;
cumk *= 2;
count++;
if(cumk == 16)
cumk = 1;
if(count%4==0)
{
tr_six2[j] = sum;
sum=0;
j++;
}
if(i==0)
tr_six2[j] = sum;
}
for(i=j;i>=0;i--)
{
if(i==j && tr_six2[i] == 0)
continue;
else if(tr_six2[i] < 10)
printf("%d", tr_six2[i]);
else if(tr_six2[i] == 10)
putchar('a');
else if(tr_six2[i] == 11)
putchar('b');
else if(tr_six2[i] == 12)
putchar('c');
else if(tr_six2[i] == 13)
putchar('d');
else if(tr_six2[i] == 14)
putchar('e');
else if(tr_six2[i] == 15)
putchar('f');
}
}
}
//8진수
if('2' == hit)
{
if('1' == hit2)//2
{
ptf(8);
scanf("%s", tr_num);
chlong = strlen(tr_num);
ptf2(8,2);
putchar('0');
for(i=0;i<=chlong-1;i++)
{
if((tr_num[i]-48) == tr_two[0]+tr_two[1]+tr_two[2])
printf("111");
else if((tr_num[i]-48) == tr_two[0]+tr_two[1])
printf("110");
else if((tr_num[i]-48) == tr_two[0]+tr_two[2])
printf("101");
else if((tr_num[i]-48) == tr_two[1]+tr_two[2])
printf("011");
else if((tr_num[i]-48) == tr_two[2])
printf("001");
else if((tr_num[i]-48) == tr_two[1])
printf("010");
else if((tr_num[i]-48) == tr_two[0])
printf("100");
else
printf("000");
}
}
if('3' == hit2)//10
{
ptf(8);
scanf("%s", tr_num);
chlong = strlen(tr_num);
for(i=chlong-1;i>=0;i--)
{
sum = sum + ((tr_num[i]-48) * pow(8,powk));
powk++;
}
ptf2(8,10);
printf("%d", sum);
}
if('4' == hit2)//16
{
ptf(8);
scanf("%s", tr_num);
chlong = strlen(tr_num);
for(i=chlong-1;i>=0;i--)
{
sum = sum + ((tr_num[i]-48) * pow(8,powk));
powk++;
}
ptf2(8,16);
printf("%x", sum);
/*for(i=0;i<=chlong-1;i++)
{
if((tr_num[i]-48) == tr_two[0]+tr_two[1]+tr_two[2])
strcat(tr_six, "111");
else if((tr_num[i]-48) == tr_two[0]+tr_two[1])
strcat(tr_six, "110");
else if((tr_num[i]-48) == tr_two[0]+tr_two[2])
strcat(tr_six, "101");
else if((tr_num[i]-48) == tr_two[1]+tr_two[2])
strcat(tr_six, "011");
else if((tr_num[i]-48) == tr_two[1])
strcat(tr_six, "010");
else if((tr_num[i]-48) == tr_two[2])
strcat(tr_six, "001");
else if((tr_num[i]-48) == tr_two[0])
strcat(tr_six, "100");
else
strcat(tr_six, "000");
}
chlong = strlen(tr_six);
for(i=chlong-1;i>=0;i--)
{
sum = sum + (tr_six[i]-48) * cumk;
cumk *= 2;
count++;
if(cumk == 16)
cumk = 1;
if(count%4==0)
{
tr_six2[j] = sum;
sum=0;
j++;
}
if(i==0)
tr_six2[j] = sum;
}
for(i=j;i>=0;i--)
{
if(tr_six2[i] < 10)
printf("%d", tr_six2[i]);
else if(tr_six2[i] == 10)
putchar('a');
else if(tr_six2[i] == 11)
putchar('b');
else if(tr_six2[i] == 12)
putchar('c');
else if(tr_six2[i] == 13)
putchar('d');
else if(tr_six2[i] == 14)
putchar('e');
else if(tr_six2[i] == 15)
putchar('f');
}*/
}
}
//10진수
if('3' == hit)
{
if('1' == hit2)
{
ptf(10);
scanf("%d", &num);
ptf2(10,2);
for(i=15;i>=0;i--)
printf("%d", num & 1<<i ? 1 : 0);
}
if('2' == hit2)
{
ptf(10);
scanf("%d", &num);
ptf2(10,8);
printf("%o", num);
}
if('4' == hit2)
{
ptf(10);
scanf("%d", &num);
ptf2(10,16);
printf("%x", num);
}
}
//16진수
if('4' == hit)
{
if('1' == hit2)//2
{
ptf(16);
scanf("%s", tr_num);
chlong = strlen(tr_num);
for(i=chlong-1;i>=0;i--)
{
if(tr_num[i] == 'a')
sum = sum + ((tr_num[i]-87) * pow(16,powk));
else if(tr_num[i] == 'b')
sum = sum + ((tr_num[i]-87) * pow(16,powk));
else if(tr_num[i] == 'c')
sum = sum + ((tr_num[i]-87) * pow(16,powk));
else if(tr_num[i] == 'd')
sum = sum + ((tr_num[i]-87) * pow(16,powk));
else if(tr_num[i] == 'e')
sum = sum + ((tr_num[i]-87) * pow(16,powk));
else if(tr_num[i] == 'f')
sum = sum + ((tr_num[i]-87) * pow(16,powk));
else
sum = sum + ((tr_num[i]-48) * pow(16,powk));
powk++;
}
ptf2(16,2);
for(i=15;i>=0;i--)
printf("%d", sum & 1<<i ? 1 : 0);
//for(i=)printf("%d", sum);
}
if('2' == hit2)//8
{
ptf(16);
scanf("%s", tr_num);
chlong = strlen(tr_num);
for(i=chlong-1;i>=0;i--)
{
if(tr_num[i] == 'a')
sum = sum + ((tr_num[i]-87) * pow(16,powk));
else if(tr_num[i] == 'b')
sum = sum + ((tr_num[i]-87) * pow(16,powk));
else if(tr_num[i] == 'c')
sum = sum + ((tr_num[i]-87) * pow(16,powk));
else if(tr_num[i] == 'd')
sum = sum + ((tr_num[i]-87) * pow(16,powk));
else if(tr_num[i] == 'e')
sum = sum + ((tr_num[i]-87) * pow(16,powk));
else if(tr_num[i] == 'f')
sum = sum + ((tr_num[i]-87) * pow(16,powk));
else
sum = sum + ((tr_num[i]-48) * pow(16,powk));
powk++;
}
ptf2(16,8);
printf("%o", sum);
}
if('3' == hit2)//10
{
ptf(16);
int number;
scanf("%x", &number);
ptf2(16,10);
printf("%d", number);
}
}
if(hit != ESC)
{
puts("\n\n\n[계속 하려면 아무키나 누르세요.]");
getch();
}
system("cls");
}while(hit != ESC);
exit(0);
system("pause");
return 0;
}
void ptf(int x)
{
printf("\n ▣ %d진수를 입력 하세요: ", x);
}
void ptf2(int x, int y)
{
printf("\n\n ▣ %d진수 -> %d진수 : ", x, y);
}
인용한 부분에 있어 만일 누락된 출처가 있다면 반드시 알려주시면 감사하겠습니다
이 글이 좋으셨다면 구독 & 좋아요
여러분의 구독과 좋아요는
저자에게 큰 힘이 됩니다.