Write you own Power without using multiplication(*) and division(/) operators
#include <stdio.h>
int multiply(int a, int b)
{
if(b)
return (a + multiply(a, b-1));
else
return 0;
}
int power(int x, int y)
{
if(y)
return multiply(x, power(x, y-1));
else
return 1;
}
int main()
{
int i,j;
printf("Enter the Numbers : ");
scanf("%d %d", &i, &j);
printf("The number is : %d\n", power(i ,j));
return 0;
}
Execution :
Enter the Numbers : 3 2
The number is : 9
Enter the Numbers : 5 3
The number is : 125
Largest Sum Contiguous Subarray :
Write an efficient C program to find the sum of contiguous subarray within a one-dimensional array of numbers which has the largest sum.
Basic Algorithm :
Initialize:
max_first = 0
max_end = 0
Loop for each element of the array
(a) max_first = max_first + a[i]
(b) if(max_first < 0)
max_first = 0
(c) if(max_end < max_first)
max_end = max_first
return max_end
C Programming
#include <stdio.h>
#include <stdlib.h>
int maxSumSubArray (int a[], int n)
{
int max_first = 0, max_end = 0, i;
for (i=0; i<n; i++)
{
max_first = max_first + a[i];
if (max_first < 0)
max_first = 0;
else if(max_end < max_first)
max_end = max_first;
}
return max_end;
}
void main()
{
int a[] = {-1, -7, -3, 12, -1, 13, 14, -4, -1, -9};
int n = sizeof(a)/sizeof(a[0]);
int maxSum = maxSumSubArray (a, n);
printf("\nMax Sum of Sub Array is : %d", maxSum);
printf ("\n");
}
Execution :
{
unsigned char z = ((y&0x0F)<<4 | (y&0xF0)>>4);
printf("The Nibble value is : %u\n", z);
}
int main()
{
unsigned char x = 100;
swapNibble(x);
return 0;
}
#include <stdio.h>
int multiply(int a, int b)
{
if(b)
return (a + multiply(a, b-1));
else
return 0;
}
int power(int x, int y)
{
if(y)
return multiply(x, power(x, y-1));
else
return 1;
}
int main()
{
int i,j;
printf("Enter the Numbers : ");
scanf("%d %d", &i, &j);
printf("The number is : %d\n", power(i ,j));
return 0;
}
Execution :
Enter the Numbers : 3 2
The number is : 9
Enter the Numbers : 5 3
The number is : 125
Largest Sum Contiguous Subarray :
Write an efficient C program to find the sum of contiguous subarray within a one-dimensional array of numbers which has the largest sum.
Basic Algorithm :
Initialize:
max_first = 0
max_end = 0
Loop for each element of the array
(a) max_first = max_first + a[i]
(b) if(max_first < 0)
max_first = 0
(c) if(max_end < max_first)
max_end = max_first
return max_end
C Programming
#include <stdio.h>
#include <stdlib.h>
int maxSumSubArray (int a[], int n)
{
int max_first = 0, max_end = 0, i;
for (i=0; i<n; i++)
{
max_first = max_first + a[i];
if (max_first < 0)
max_first = 0;
else if(max_end < max_first)
max_end = max_first;
}
return max_end;
}
void main()
{
int a[] = {-1, -7, -3, 12, -1, 13, 14, -4, -1, -9};
int n = sizeof(a)/sizeof(a[0]);
int maxSum = maxSumSubArray (a, n);
printf("\nMax Sum of Sub Array is : %d", maxSum);
printf ("\n");
}
Execution :
[root@localhost Cisco]# gcc -g maxSumSubArray.c
[root@localhost Cisco]# ./a.out
Max Sum of Sub Array is : 38
[root@localhost Cisco]#
void swapNibble(unsigned char y)
Swapping Nibbles :
#include <stdio.h>
{
unsigned char z = ((y&0x0F)<<4 | (y&0xF0)>>4);
printf("The Nibble value is : %u\n", z);
}
int main()
{
unsigned char x = 100;
swapNibble(x);
return 0;
}
Execution :
[root@BLRSRV07 Cisco]# gcc -g swapNibbles.c
[root@BLRSRV07 Cisco]# ./a.out
The Nibble value is : 70
[root@BLRSRV07 Cisco]#
Explanation :
100 in binary form ----> 0110 0100
Nibble value of 100 is 70 ----> 0100 0110
So basically we are doing masking and then we are shifting left and right using 'Bitwise Operator'.
(y&0x0F)<<4 | (y&0xF0)>>4
(y&0x0F)<<4--->(0110 0100 & 0000 1111) <<4---> 0100 0000
(y&0xF0)>>4--->(0110 0100 & 1111 0000) >>4---> 0000 0110
(y&0x0F)<<4--->(0110 0100 & 0000 1111) <<4---> 0100 0000
(y&0xF0)>>4--->(0110 0100 & 1111 0000) >>4---> 0000 0110
No comments:
Post a Comment