C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[47900] 이 소스..무슨말인지 도저히 모르겠어요..
김석훈 [] 954 읽음    2007-01-26 09:56
문자열을 입력받아 10진수 숫자만 2진수로 변환하는 소스를 만들어야 합니다..

예를들어 i am 12 years old를 입력하면 12는 2진수로 바뀌어서 i am 00001100 years old로 출력하게 하느 소스를 만들어야 합니다..

#include <stdio.h>

int get_digit(int decimal);
void convert_num(char *num, int decimal);                                        <<--괄호안의것

void main()
{
    char num[255]={0}, question[255]={0};
    int decimal=0, digit=0, i=0;

printf("십진수 숫자만 이진수로 바꿔서 출력하는 프로그램입니다.\n");
printf("아무 문장과 십진수 숫자를 입력해 주세요.\n");
    gets(question);

    while(1)
    {
        if(question[i]=='\0')
            break;
        if((question[i]>='0')&&(question[i]<='9'))
        {
            sscanf(&question[i], "%d", &decimal);                           <<--무슨말이에요?sscanf를 안쓰고 하는 방법                                                                                                        없  읋까요?
            digit=get_digit(decimal);

            convert_num(num, decimal);
            printf("%s", num);
            i=i+digit;                                                                        <<-이 if문안의 모든흐름이 이해가 잘 안되네여..
        }
        else
            printf("%c", question[i++]);
    }
    printf("\n");
}

int get_digit(int decimal)
{
    int i=0;
    if (decimal==0)
        return 0;
    while (decimal>0)
    {
        decimal=decimal/10;                                                       <<----이건 왜 썼을까여?ㅠㅠ
        i++;
    }
    return i;
}

void convert_num(char *num, int decimal)
{
    int i = 0, remainder=0;
    char temp[255]={0};
   
if (decimal==0)
    {
        num[0]='0';                                                                   <--배열에 0이 들어간거랑 null이 들어간거랑 무슨뜻이져?
        num[1]=0;
        return;
    }
    while(decimal>0)
    {
        remainder=decimal%2;
        temp[i]=remainder+'0';                                       <<==문자열도 아닌데 null을 왜 넣었을까ㅣ여?ㅡㅡ
        decimal=decimal/2;
        i++;
    }
    temp[i]=0;
    for(int j=0;j<i;j++)
        num[j]=temp[(i-j)-1];
  num[j]=0;
}

완벽하게 동작하는 소스입니다..

제가 옆에 체크한부분 좀 설명해주세요

이틀밤새서 고민해서 그런가 아..머리가 안돌아갑니다..

자세하게 아니라도 제발 대답 좀 부탁드려요..

+ -

관련 글 리스트
47900 이 소스..무슨말인지 도저히 모르겠어요.. 김석훈 954 2007/01/26
47901     소스가 제대로 실행되지 않았지만 원리만 정리합니다. 조대현.Clau 1035 2007/01/26
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.