- 5 if a perfect square
- 4 if multiple of 4 and divisible by 6
- 3 if even number
<10,its_weight>,<36,its weight><89,its weight>
The program should display the numbers in increasing order of their their weights.
#include<stdio.h>
#include<math.h>
int getWeight(int n)
{
int w=0;
float root=sqrt(n);
if(root==ceil(root))
w+=5;
if(n%4==0&&n%6==0)
w+=4;
if(n%2==0)
w+=3;
return w;
}
void main()
{
int nums[15];
int ws[15];
int i,j,t,n;
printf("Enter number of numbers");
scanf("%d",&n);
printf("\nEnter numbers");
for(i=0;i<n;i++)
scanf("%d",&nums[i]);
for(i=0;i<n;i++)
ws[i]=getWeight(nums[i]);
printf("\nBefore sorting:\n");
for(i=0;i<n;i++)
printf("%d:%d\t",nums[i],ws[i]);
for(i=0;i<n;i++)
for(j=0;j<n-i-1;j++)
if(ws[j]>ws[j+1])
{
t=ws[j+1];
ws[j+1]=ws[j];
ws[j]=t;
t=nums[j+1];
nums[j+1]=nums[j];
nums[j]=t;
}
printf("\nSorted:\n");
for(i=0;i<n;i++)
printf("%d:%d\t",nums[i],ws[i]);
}
No comments:
Post a Comment