[c++]2진수를 10진수로 10진수는 2진수로 바꾸는 프로스램
- 최초 등록일
- 2004.11.04
- 최종 저작일
- 2004.11
- 2페이지/ 한컴오피스
- 가격 1,000원
소개글
프로그램 주석및 소스분석 함수분석까지
모두 기술되어있습니다.
과제 제출 하실떄 소스분석을 보시면
적당히 고치시는것도 도움이 많이 되리라 믿습니다
프로그램은 완벽히 돌아가고 좋은 학점 받았습니다.
네일코드는 결과값 실행 저장법을 몰라 올리지 못했습니다.
컴파일 실행환경
비쥬얼c++로 작성했습니다
본문내용
문제: 10진수형의 문자열이 입력되면 2진수의 문자형으로 변화하고 2진수 문자열은 10진수로 변환하여 출력한다.
1. 문제 정의
주어진 문제는 2진수와 10진수를 서로 바꾸어 출력해 주는 프로그램을 만드는 문제이다.
2.문제 분석
데이터는 10진수와 2진수를 입력받는다. 2진수와 10진수를 구분하여서 연산해야 하는데 그 방법으로는
알파벳 B가 처음에 입력됨으로 구분한다.
if (strB[0]=='b' || strB[0]=='B')
이프문을 사용하여 첫 번쨰 저장되는 문자열이 b or B 가 나오면 으프문 속으로 들어가서 연산토록 하였고
else if (strB[0]<='9' && strB[0]>='0')
그렇치 않은 경우에는 위의 엘스 이프문을 사용하여 첫 번째 저장되는 문자열이 자연수임을 나타내었습니다.
본문제에서 2진수를 10진수로 바꾸고 10진수를 2진수로 바꾸는것이 가장 주된 내용인데 바꾸는 방법은
우선 2진수를 10진수로 변환하는 방법은 ,
while(strB[i]=='1' || strB[i]=='0')
{
lResult<<=1;
lResult+=(strB[i]-'0');
i++;
}
이런 연산에 의하여 변환 하였고, 10진수를 2진수로 변환한 방법은 ,
if(strB[0] >= '1')
{
for( j = 0, r=0; num1 > 0; j++)
{
r = num1 % 2;
num1 = num1/2;
moon[j] =r+'0';
}
위와 같은 연산에 의하여 변환 시켰습니다.
3.프로그램설계
int bun:이 함수는 이진수를 10진수로 변환하는 과정에서 제가 입력값을 문자형로 받았는데
연산을 위해서는 정수형으로 변환시켜야 가능 하기에 만든 함수입니다.
int bun(char n[]){
int a=0;
int b=0;
int sum=0;
a=strlen(n);
a--;
b=a;
while(a>=0)
{
sum += (n[a]-'0')*(int)pow(10,b-a);
a--;
}
return sum;
우선 함수 선언을 하고 변수를 지정하고 리턴을 사용하여 정수형으로 저장 시키는데 와일문을 사용하여
a라는 함수가 0보다 크거나 같을때까지 sum이라는 변수에 아스키코드로 저장된 값에 ‘0’를 빼준 값과
10의 b-a승을 곱하여 sum에 입력한다. 그후 a를 하나씩 줄여 점점 더해나감으로서 문자형을 정수형으로
변환시켜 준다.
참고 자료
없음