C언어 소스코드 좀 봐주세요 ㅠㅠㅠㅠ
글쓴이: super1682 / 작성시간: 금, 2014/10/10 - 2:05오후
#include<stdio.h> #include<math.h> void haha(int decimal2[],int count){ //2진수를 16진수로 바꾸는 함수, count는.... 이진수가 저장되어 있는... 방+1입니다. int k,i,j,hexadecimal[50]={0}; //이 함수에 필요한 변수들 int g; // g는 hexa배열에 저장되는 방의 개수예요. (그러니깐 100이라고 하면은 // 이진구 네개씩 자르면 2개로 나누어지죠? 그래서 2개의 방에 저장된다.. 그말인데 무 // 슨 말인지 아시겠어요?? for(j=0,g=((count-1)/4)+1; j<g; j++){ // hexa 처음 방 // 이거는 4개로 자른 이진수의 마지막방에서 4번째까지 hexa [0]에 저장한거예요 for(i=count-1,k=0;k<4;i--,k++){ // pow가 뭐냐면... ㅎㅎ 4자리로 나눠서 그 네자리를 십진수로 바꿔서 더하잖아요?? // 그래서 pow함수를 써서 함거예요(2의 0,1,2,3 승이요) hexadecimal[j] += decimal2[i]*pow(2, k); } count -=4; // 4개의 숫자를 하고 이제 그 다음 4개를 가지고 더하는 거라서 이렇게 한거예요 } for(i=g-1;i>-1;i--){ // 이건 이 hexa 함수의 값을 출력한거예요 if(hexadecimal[i]>9) // 해당되는 방에 저장되어 있는 숫자가 10이상이면 문자로 출력하는거예요 printf("%c",'A'+hexadecimal[i]-10); // A~F 까지 출력 else printf("%d",hexadecimal[i]); // 9이하이면 그냥 숫자로 출력해요 } } // 근데 16부토는 어떻게 해요/ㅠㅠ. 모르겠어요 ㅠㅠㅠ int main(){ int num; int count=0, i,count1=0,j,num2; int decimal[50]={0},decimal2[50]={0}; int gray[50]={0}; while(1){ while(1){ printf("십진수를 입력하세요 : "); scanf_s("%d",&num); if(num>=100) break; else printf("세자리 이상의 값을 입력해 주세요 >3<\n"); } if(num=='Z') break; num2=num; for (i = 0; num2 > 0; i++){ decimal[i] = num2 % 2; num2 = num2 / 2; count++; } printf("2진수 표현 : "); for (i = count-1; i >= 0; i--){ printf("%d", decimal[i]); } gray[0] = decimal[count-1]; printf("\n그레이 코드 표현 : "); for(i=count-1,j=1;i>=0;i--,j++){ gray[j] = decimal[i]^decimal[i-1]; count1++; } for (i=0; i<count1; i++){ printf("%d", gray[i]); } for(i=1;i<count-1;i++){ decimal2[0]=gray[0]; decimal2[i]=decimal2[i-1]^gray[i]; } printf("\n"); printf("16진수 표현 : "); haha(decimal2,count); printf("\n"); } }
Forums:
코드 정리해 드렸습니다.
코드 정리해 드렸습니다.
댓글을 어떻게 확인하나요? ㅠ
어떻게 확인해야 되는 건지 모르겟네요 ㅠ
코드를 답변을 하실 분들이 읽기 좋게 정리를 해
코드를 답변을 하실 분들이 읽기 좋게 정리를 해 드렸다는 의미입니다. (코드 수정을 했다는 것이 아니라..)
코드를 올려 주실 때는 < code > < / code > block을 이용해서 올려 주시면 indent 들이 제대로 출력이 되니 코드를 올리실때는 code block을 이용해 주세요. (제가 정리해 드렸다는 의미는 올려주신 코드에 code tag를 추가해 줬다는 의미입니다.)
댓글 달기