#include<stdio.h>
#include<stdio.h>
#include<conio.h>
#include<math.h>
void mergeSort(int arr[],int low,int mid,int high);
void partition(int arr[],int low,int high);
int decimal_binary(int);
int main()
{
int count=0,k,d[10],c[10],b[10][10],a[10],i,sum=0,n,no,j;
printf("Enter the number of binary numbers");
scanf("%d",&no);
printf("Enter the binary number");
for(i=0;i<no;i++)
scanf("%d",&a[i]);
for(i=0;i<no;i++)
{
n=a[i];
for(j=0;j<4;j++)
{
b[i][j]=n%10;
n=n/10;
}
}
for(i=0;i<no;i++)
{
for(j=0;j<4;j++)
{
if(b[i][j]==1)
sum=sum+pow(2,j);
}
c[i]=sum;
sum=0;
}
for(i=0;i<no;i++)
printf("The value is %d\n",c[i]);
printf("The multiples of 3 are:\n");
for(j=0;j<no;j++)
{
n=c[j];
if((n%3)==0){
printf("%d\t",c[j]);
d[k++]=c[j];
} }
printf("\ncount = %d",k);
partition(d,0,k);
printf("\n\nAfter sorting values are:\n");
for(i=0;i<k;i++)
printf("%d\t%d\n",d[i],decimal_binary(d[i]));
printf("\n");
// for(i=0;i<k;k++){
// n=decimal_binary(d[i]);
// printf("%d",n);}
getch();
}
void partition(int arr[],int low,int high){
int mid;
if(low<high){
mid=(low+high)/2;
partition(arr,low,mid);
partition(arr,mid+1,high);
mergeSort(arr,low,mid,high);
}
}
void mergeSort(int arr[],int low,int mid,int high){
int i,m,k,l,temp[50];
l=low;
i=low;
m=mid+1;
while((l<=mid)&&(m<=high)){
if(arr[l]<=arr[m])
{
temp[i]=arr[l];
l++;
}
else
{
temp[i]=arr[m];
m++;
}
i++;
}
if(l>mid){
for(k=m;k<=high;k++)
{
temp[i]=arr[k];
i++;
}
}
else
{
for(k=l;k<=mid;k++)
{
temp[i]=arr[k];
i++;
}
}
for(k=low;k<=high;k++){
// printf("%d\t",temp[k]);
arr[k]=temp[k];
}
}
int decimal_binary(int n) /* Function to convert decimal to binary.*/
{
int rem, i=1, binary=0;
while (n!=0)
{
rem=n%2;
n/=2;
binary+=rem*i;
i*=10;
}
return binary;
}
sujith1038 0 Newbie Poster
Be a part of the DaniWeb community
We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.