# include <string.h>
# include <stdio.h>
# define MAXN 80
/** metatropi dyadikon bits se arithmo **/

int bin2dec(char x[])
{
	/** 110011 
	 * 1 * 2^ 0
	 * 2 + 1 
	 * pow(x,n) 
	 * **/
	int count=0;
	int i;
	for(i=0;i<strlen(x);i++)
	{
		if(x[i]=='1') count=2*count+1;
		else count = 2 * count+0;
		printf("i=%d x[i]=%c count = %d \n",i,x[i],count);
	}
	return count;
}

/** elegxei an to x exei mono bits **/
int isBinary(char x[])
{
	int i;
	if(strlen(x)==0) return 0;
	for(i=0;i<strlen(x);i++)
	{
		/** an opoiodipote den einai 0,1 tote epistrefei 0**/
		if(!(x[i]=='0' || x[i]=='1')) return 0;
	}
	return 1;
}

/** auti i synartisi kanei convert
 * ton dekadiko n se duadiko result 
 * kai epistrefei posa stoixeia exei mesa
 * to result **/
int dec2bin(int n,int result[])
{
	int b =0;
	int count =0;
	while(n!=0)
	{
		b = n % 2;
		n = n /2;
		result[count]=b;
		count++;
		
	}
	return count;
}
/** Auti i synartisi tha antistrepsei ton pinaka x **/
void reverseVector(int x[],int n)
{
	//x=[10,20,30,40,50]
	//x'=[50,40, 30 ,20 ,10]
	int i;
	for(i=0;i<n/2;i++)
	{
		//antistrefo kathe stoixeio me to antitheto tou
		//px to x[0] me to x[n-1]
		int temp = x[i];
		x[i]=x[n-i-1];
		x[n-i-1]=temp;
		printf("Antimetatheto to %d me to %d \n",i,n-i-1);
	}
}

/** 
 * **/
int main()
{
	char bits[MAXN];
	int dec;
	do
	{
		printf("Doste enan dyadiko arithmo ?\n");
		gets(bits);
	}while(!isBinary(bits));
	dec=bin2dec(bits);
	printf("O dekadikos einai %d \n",dec);
	return 0;
}
