0% found this document useful (0 votes)
16 views

Algorithm Lab

Uploaded by

k16861978
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
16 views

Algorithm Lab

Uploaded by

k16861978
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 12

1.

Generate Nth Fibonacci Number


#include <stdio.h>

int fibonacci(int n) {
if (n <= 0) return 0;
if (n == 1) return 1;
return fibonacci(n - 1) + fibonacci(n - 2);
}

int main() {
int n;
printf("Enter the position of Fibonacci number: ");
scanf("%d", &n);
printf("Fibonacci number at position %d is %d\n", n,
fibonacci(n));
return 0;
}

2. Reverse a Given Decimal Number

#include <stdio.h>

int reverseNumber(int num) {


int reversed = 0;
while (num != 0) {
reversed = reversed * 10 + num % 10;
num /= 10;
}
return reversed;
}

int main() {
int num;
printf("Enter a decimal number: ");
scanf("%d", &num);
printf("Reversed number is %d\n", reverseNumber(num));
return 0;
}

3. Convert Binary Number to Decimal Number


#include <stdio.h>

int binaryToDecimal(int binary) {


int decimal = 0, base = 1, last_digit;

while (binary > 0) {


last_digit = binary % 10;
binary = binary / 10;
decimal += last_digit * base;
base = base * 2;
}

return decimal;
}

int main() {
int binary;
printf("Enter a binary number: ");
scanf("%d", &binary);
printf("Decimal equivalent is %d\n", binaryToDecimal(binary));
return 0;
}

4. Calculate sin(x) Value Without Using In-Built Function


#include <stdio.h>
#include <math.h>

double factorial(int n) {
if (n == 0 || n == 1) return 1;
double fact = 1.0;
for (int i = 2; i <= n; i++) fact *= i;
return fact;
}

double sine(double x) {
double sin_x = x; // x in radians
double term;

for (int i = 1; i <= 10; i++) {


term = (i % 2 == 0 ? -1 : 1) * (pow(x, (2 * i + 1)) /
factorial(2 * i + 1));
sin_x += term;
}

return sin_x;
}

int main() {
double x;
printf("Enter angle in radians: ");
scanf("%lf", &x);
printf("sin(%lf) is approximately %lf\n", x, sine(x));
return 0;
}

5. Calculate cos(x) Value Without Using In-Built Function


#include <stdio.h>
#include <math.h>

double cosine(double x) {
double cos_x = 1.0; // x in radians
double term;

for (int i = 1; i <= 10; i++) {


term = (i % 2 == 0 ? -1 : 1) * (pow(x, (2 * i)) / factorial(2
* i));
cos_x += term;
}

return cos_x;
}

int main() {
double x;
printf("Enter angle in radians: ");
scanf("%lf", &x);
printf("cos(%lf) is approximately %lf\n", x, cosine(x));
return 0;
}

6. Calculate tan(x) Value Without Using In-Built Function


#include <stdio.h>
#include <math.h>

double sine(double x);


double cosine(double x);

double tangent(double x) {
return sine(x) / cosine(x);
}

int main() {
double x;
printf("Enter angle in radians: ");
scanf("%lf", &x);
printf("tan(%lf) is approximately %lf\n", x, tangent(x));
return 0;
}

7. Calculate GCD of Two Numbers


#include <stdio.h>

int gcd(int a, int b) {


if (b == 0)
return a;
return gcd(b, a % b);
}
int main() {
int a, b;
printf("Enter two numbers: ");
scanf("%d %d", &a, &b);
printf("GCD of %d and %d is %d\n", a, b, gcd(a, b));
return 0;
}

8. Generate Prime Numbers


#include <stdio.h>

void generatePrimes(int limit) {


for (int num = 2; num <= limit; num++) {
int isPrime = 1;
for (int j = 2; j * j <= num; j++) {
if (num % j == 0) {
isPrime = 0;
break;
}
}
if (isPrime)
printf("%d ", num);
}
printf("\n");
}

int main() {
int limit;
printf("Enter the upper limit to generate prime numbers: ");
scanf("%d", &limit);
generatePrimes(limit);
return 0;
}

9. Find Square Root of Number Without In-Built Function

#include <stdio.h>

double squareRoot(double n) {
double low = 0, high = n, mid;

while ((high - low) > 0.00001) { // Precision level


mid = (low + high) / 2;

if ((mid * mid) > n)


high = mid;
else
low = mid;
}
return mid;
}

int main() {
double n;
printf("Enter a number to find its square root: ");
scanf("%lf", &n);
printf("Square root of %.2lf is approximately %.5lf\n", n,
squareRoot(n));
return 0;
}
10. Convert Character to ASCII Code
#include <stdio.h>

int main() {
char ch;

printf("Enter a character: ");


scanf("%c", &ch);

printf("ASCII value of '%c' is %d\n", ch, ch);


return 0;
}
11. Partition an Array
#include <stdio.h>

void partitionArray(int arr[], int size, int pivot) {


int left[size], right[size];
int leftCount = 0, rightCount = 0;

for (int i = 0; i < size; i++) {


if (arr[i] < pivot)
left[leftCount++] = arr[i];
else
right[rightCount++] = arr[i];
}

printf("Left partition: ");


for (int i = 0; i < leftCount; i++)
printf("%d ", left[i]);

printf("\nRight partition: ");


for (int i = 0; i < rightCount; i++)
printf("%d ", right[i]);

printf("\n");
}

int main() {
int arr[] = {12, -3, -5, -7, -4, -6};
int size = sizeof(arr)/sizeof(arr[0]);
partitionArray(arr, size, -4);

return 0;
}
12. Remove Duplicate Elements from an Array
#include <stdio.h>

void removeDuplicates(int arr[], int size) {


int temp[size], k=0;

for(int i=0; i<size; i++) {


int j;

for(j=0; j<k; j++)


if(arr[i] == temp[j])
break;

if(j == k)
temp[k++] = arr[i];
}

printf("Array after removing duplicates: ");


for(int m=0;m<k;m++) {
printf("%d ", temp[m]);
}
printf("\n");
}

int main() {
int arr[] = {1,2,3,4,3,2};
int size = sizeof(arr)/sizeof(arr[0]);

removeDuplicates(arr,size);

return(0);
}
13. Count Duplicate Elements from an Array
#include <stdio.h>

void countDuplicates(int arr[], int size) {


int count[size];
for(int i=0; i<size; i++)
count[i] = -1;

for(int i=0; i<size; i++) {


int c=1;

for(int j=i+1;j<size;j++) {
if(arr[i]==arr[j]) {
c++;
count[j] = -1;
}
}

if(count[i] != -1)
count[i] = c;
}

printf("Duplicate elements and their counts:\n");


for(int k=0;k<size;k++) {
if(count[k] > -1)
printf("%d occurs %d times\n", arr[k], count[k]);
}
}

int main() {
int arr[] = {1,2,3,4,3,2};
int size = sizeof(arr)/sizeof(arr[0]);

countDuplicates(arr,size);

return(0);
}
14. Calculate Prime Factors of a Number
#include <stdio.h>

void primeFactors(int n) {
while(n % 2 == 0) {
printf("%d ",2);
n /=2;
}

for(int i=3;i*i<=n;i+=2){
while(n%i==0){
printf("%d ",i);
n/=i;
}
}

if(n >2){
printf("%d ",n);
}
}

int main() {
int n;

printf("Enter a number: ");


scanf("%d",&n);

printf("Prime factors of %d are: ",n);


primeFactors(n);
return(0);
}
15. Reverse an Array
#include <stdio.h>

void reverseArray(int arr[], int size){


for(int start=0,end=size-1;start<end;++start,--end){
int temp=arr[start];
arr[start]=arr[end];
arr[end]=temp;}
}

int main(){
int arr[]={1,2,3,4};
int size=sizeof(arr)/sizeof(arr[0]);
reverseArray(arr,size);
printf("Reversed array: ");
for(int i=0;i<size;i++)
printf("%d ",arr[i]);
return(0);
}

15. Reverse an Array


#include <stdio.h>

void reverseArray(int arr[], int size){


for(int start=0,end=size-1;start<end;++start,--end){
int temp=arr[start];
arr[start]=arr[end];
arr[end]=temp;}
}

int main(){
int arr[]={1,2,3,4};
int size=sizeof(arr)/sizeof(arr[0]);
reverseArray(arr,size);
printf("Reversed array: ");
for(int i=0;i<size;i++)
printf("%d ",arr[i]);
return(0);
}
16. Calculate kth Smallest Number in an Array
#include <stdio.h>
#include <stdlib.h>

// Function to compare two integers for qsort()


int compare(const void *a, const void *b){
return (*(int*)a - *(int*)b);
}

int kthSmallest(int arr[], int size, int k){


qsort(arr,size,sizeof(int),compare);
return arr[k-1]; // k-1 because array indices start at zero.
}

int main(){
int arr[]={12,-3,-5,-7,-4,-6};
int size=sizeof(arr)/sizeof(arr[0]);
int k=3;

printf("%dth smallest element is


%d\n",k,kthSmallest(arr,size,k));

return(0);
}
17. Implement Merge Sort#include <stdio.h>
void merge(int arr[], int leftIndex,int middleIndex,int rightIndex){
int leftSize=middleIndex-leftIndex+1,rightSize=rightIndex-
middleIndex;

int left[leftSize],right[rightSize];

for(int i=0;i<leftSize;i++)
left[i]=arr[leftIndex+i];

for(int j=0;j<rightSize;j++)
right[j]=arr[middleIndex+1+j];

int k=leftIndex,i=0,j=0;

while(i<leftSize && j<rightSize){


if(left[i]<=right[j]){
arr[k++]=left[i++];
}else{
arr[k++]=right[j++];
}
}

while(i<leftSize){
arr[k++]=left[i++];
}

while(j<rightSize){
arr[k++]=right[j++];
}
}

void mergeSort(int arr[], int leftIndex,int rightIndex){


if(leftIndex<rightIndex){
int middleIndex=(leftIndex+rightIndex)/2;

mergeSort(arr,leftIndex,middleIndex);
mergeSort(arr,middleIndex+1,rightIndex);
merge(arr,leftIndex,middleIndex,rightIndex);
}
}

int main(){
int arr[]={12,-3,-5,-7,-4,-6};
int size=sizeof(arr)/sizeof(arr[0]);

printf("Unsorted array:\n");
for(int i=0;i<size;i++)
printf("%d ",arr[i]);

mergeSort(arr,0,size-1);

printf("\nSorted array:\n");
for(int i=0;i<size;i++)
printf("%d ",arr[i]);

return(0);
18. Find Minimum and Maximum Among Given Set
#include <stdio.h>
#include <limits.h>

void findMinMax(int arr[], int size,int* min,int* max){


if(size<=0)
return;

*min=*max=arr[0];

for(int i=1;i<size;i++){
if(arr[i]<*min)
*min=arr[i];

if(arr[i]>*max)
*max=arr[i];
}
}

int main(){
int arr[]={12,-3,-5,-7,-4,-6};
int size=sizeof(arr)/sizeof(arr[0]);
int min,max;

findMinMax(arr,size,&min,&max);

printf("Minimum value: %d\nMaximum value: %d\n",min,max);

return(0);
}
19. Perform Quick Sort
#include<stdio.h>
void swap(int* a,int* b){
int temp=*a;
*a=*b;
*b=temp;}

int partition(int arr[],int low,int high){


int pivot=arr[high],i=(low-1);

for(int j=low;j<high;j++){
if(arr[j]<=pivot){
swap(&arr[++i],&arr[j]);}}

swap(&arr[++i],&arr[high]);
return(i);}

void quickSort(int arr[],int low,int high){


if(low<high){
int pi=partition(arr,low,high);

quickSort(arr,low,pi-1);
quickSort(arr,pi+1,high);}}

int main(){
int arr[]={12,-3,-5,-7,-4,-6};
int size=sizeof(arr)/sizeof(arr[0]);

printf("Unsorted array:\n");
for(int i=0;i<size;i++)
printf("%d ",arr[i]);

quickSort(arr,0,size-1);

printf("\nSorted array:\n");
for(int i=0;i<size;i++)
printf("%d ",arr[i]);

return(0);}
}

20. Perform Array Counting Using Histogram


#include<stdio.h>
#define MAX_VALUE_RANGE(100)

void histogramCounting(int arr[],size_t size){

int histogram[MAX_VALUE_RANGE]={};

for(size_t index=00:index<size;++index){

histogram[arr[index]]++;
printf("\nValue:% d Count:% d \n",index,histogram[index]);}}

You might also like