[go: up one dir, main page]

0% found this document useful (0 votes)
10 views12 pages

Algorithm Lab

Download as pdf or txt
Download as pdf or txt
Download as pdf or txt
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