#include <iostream>
#include <math.h>
using namespace std;
void main()
{
int a, i;
int arr[1000]; //2의 1000승의 숫자까지 가능함.
int binary; //이진수 각 자리수의 십진수 변환값
int binaryAll=0; //이진수 각 자리수의 십진수 변환값을 모두 더한값
cout<<"이진수를 입력하세요"<<endl;
cin>>a;
cout<<"입력된 2진수 값 : "<<a<<endl;
for(i=1; i<1000 ; i++) //입력받은 수가 몇자리 수인지 인지하는 for문 (i값으로 최고 큰 자리수가 10의 몇승인지 확인)
{
a=a/10;
if(a==1)
break;
}
// cout<<i<<endl; //10^i = 최고로 큰 자리수
for(i; i==0 ; i--)
{
int b;
b = (int)(a/pow((double)10,i)); // 각 자리수의 값 b는 1또는 0이나옴
binary = b * (int)(pow((double)2,i));
arr[i] = binary;
}
for(i; i<1000 ; i++)
{
binaryAll += arr[i];
}
cout<<"출력된 10진수 값 : "<<binaryAll<<endl;
}
이거 만들었는데 처음 for문에서 i가 몇번 나눴는지 알려주는 (자리수를 확인하는)수자나
근데 문제는 맨마지막 for문에서
for(i ; i<1000 ; i++) 여기서 1000대신에 그 몇번을 나눴는지를 써줘야되거든...
저대로 하니까 arr[1000]까지 다더해서 쓰레기값까지 더해져서 나와서 ㅠㅠㅠ
횽들 어떻게 하면 좋을까? 도와줘 ㅠㅠ
int b; int i = 0; while(a != 0) { b = a % 10; binaryAll += b * pow((double)2,i); a = a / 10; i++; } std::cout<<binaryAll;
arr[1000]을 꼭 사용해서 하고 싶으시면요. while(a != 0) { a = a/10; i++; }
하면 i가 자리수 니까 1000대신 i를 넣으시면될거같네요 ㅎ
아니면 arr[1000]={0}하면 모든값이 0으로 초기화 되니까 그렇게하셔도 근데 젤 맨위에 댓글 방법이 좋을거같아요 ㅋㅋㅋ